@operato/event-view 10.29.61 → 10.29.68
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 +9 -0
- package/dist/src/calendar-monthly-styles.js +12 -0
- package/dist/src/calendar-monthly-styles.js.map +1 -1
- package/dist/src/calendar-monthly.js +2 -2
- package/dist/src/calendar-monthly.js.map +1 -1
- package/dist/src/calendar-weekly-styles.js +12 -0
- package/dist/src/calendar-weekly-styles.js.map +1 -1
- package/dist/src/calendar-weekly.js +2 -2
- package/dist/src/calendar-weekly.js.map +1 -1
- package/dist/test/calendar-layout.test.js +23 -0
- package/dist/test/calendar-layout.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/test/calendar-layout.test.ts +29 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
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.68](https://github.com/hatiolab/operato/compare/v10.29.67...v10.29.68) (2026-11-06)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### :bug: Bug Fix
|
|
10
|
+
|
|
11
|
+
* **event-view:** the calendar header wraps on a phone, its controls kept on one line ([be62f56](https://github.com/hatiolab/operato/commit/be62f56af8cb7ef60b9b32fd8177091b3e869936))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
6
15
|
### [10.29.61](https://github.com/hatiolab/operato/compare/v10.29.60...v10.29.61) (2026-10-30)
|
|
7
16
|
|
|
8
17
|
**Note:** Version bump only for package @operato/event-view
|
|
@@ -45,8 +45,20 @@ export const CalendarMonthlyStyles = css `
|
|
|
45
45
|
white-space: nowrap;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
/*
|
|
49
|
+
The three controls are one group: on a phone the week's title left them too little room and
|
|
50
|
+
the group, a plain block, broke its buttons onto three lines. [확인함] 2026-11-05 · 375px
|
|
51
|
+
*/
|
|
48
52
|
[nav] {
|
|
49
53
|
margin-left: auto;
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
flex: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* When title and controls do not fit on one line, the controls go under the title. */
|
|
60
|
+
[head] {
|
|
61
|
+
flex-wrap: wrap;
|
|
50
62
|
}
|
|
51
63
|
|
|
52
64
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-monthly-styles.js","sourceRoot":"","sources":["../../src/calendar-monthly-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkWvC,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport const CalendarMonthlyStyles = css`\n :host {\n display: flex;\n flex-direction: column;\n\n /*\n One row of controls, one height. The text button was pinned to 24px while the icon\n buttons beside it are 40, so the middle of the three sat in a different band.\n */\n --md-text-button-container-height: 32px;\n --md-icon-button-icon-size: 20px;\n --md-icon-button-state-layer-height: 32px;\n --md-icon-button-state-layer-width: 32px;\n }\n\n [head] {\n display: flex;\n align-items: center;\n /*\n The view switch sat flush against the next button — measured 0px between them.\n\n The space goes on the switch, not on the row: a flex gap also opens a gap between the\n title and the nav, and those two extra pixels each made the header 8px wider than the\n grid under it, which put a horizontal scrollbar on the whole calendar. [확인함] 2026-09-11\n */\n }\n\n [this-month] {\n /* Was the x-large keyword, which is a browser step, not a step of this theme. */\n font-size: var(--md-sys-typescale-headline-small-size, 1.5rem);\n /*\n The month used to be wrapped in <b>. Formatting the whole title through Intl dropped\n that tag and left 24px at weight 400 — large, but with nothing to say it is the title.\n */\n font-weight: var(--md-sys-typescale-headline-small-weight, 640);\n /*\n The header must never be what makes the calendar scroll sideways. A flex item's floor is\n its content, so without this the title pushes the nav out and the grid follows — the same\n rule the day cells needed.\n */\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n [nav] {\n margin-left: auto;\n }\n\n /*\n Room for what the buttons actually occupy.\n\n An md-icon-button paints a 48px touch target around its 32px box, so the rightmost control\n reaches 8px past its own edge. With that control flush to the header's right edge the\n header measured 8px wider than the grid under it, and the whole calendar grew a horizontal\n scrollbar. [확인함] 2026-09-11 — button right 898, its inner target 906, header client 860.\n\n The inset makes room instead of shrinking the target: a smaller target is a worse button,\n and the last control here is slotted by the host, whose size this component cannot know.\n */\n [head] {\n padding-right: var(--calendar-head-inset, 8px);\n }\n\n ::slotted(*) {\n color: var(--md-sys-color-secondary);\n }\n\n ol {\n flex: 1;\n\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n grid-template-rows: max-content;\n\n padding: 0;\n margin: var(--calendar-monthly-ol-margin, 9px 0);\n border-top: var(--calendar-monthly-ol-top-border, 3px solid var(--md-sys-color-outline, #999));\n /*\n The grid closes itself into one box.\n\n Its four sides were already drawn - the rule above for the top, each cell's own right and\n bottom, and the left on every seventh - but the corners stayed square, so a host that put\n a rounded box around the calendar ended up with a round line and a square line meeting at\n the same corner. On the plant page the two were 1px apart down the sides and 9px apart at\n the bottom: a doubled line on the left and right, a gap only at the bottom.\n\n [확인함] 2026-09-11 outer l69 r931 b956 · grid l70 r930 b947\n\n Clipping here rounds the corner cells' own surfaces with it, which is what makes this one\n box rather than a square grid wearing a rounded frame. A host then needs no frame of its\n own - and should not add one, because a second frame is what produced the doubled line.\n */\n border-radius: var(--calendar-monthly-radius, var(--ui-r-small, 6px));\n overflow: hidden;\n }\n\n /*\n * The seven tracks are 1fr, and 1fr's minimum is min-content — so a cell whose chip is\n * white-space: nowrap pushes its own track wide and squeezes the rest.\n *\n * Measured at 700px with one long title: li widths came out\n * [58, 58, 353, 58, 58, 58, 58] without min-width: 0\n * [100 × 7] with it\n *\n * The host page had already asked for text-overflow: ellipsis on that chip, and it never\n * ran: the track grew instead of the text being clipped. [확인함] 2026-09-07\n */\n li {\n position: relative;\n min-width: 0;\n\n min-height: 10%;\n list-style: none;\n border: var(--calendar-monthly-border, 1px solid var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.1)));\n border-width: var(--calendar-monthly-border-width, 0 1px 1px 0px);\n opacity: var(--calendar-monthly-opacity);\n\n user-select: none;\n touch-action: none;\n }\n\n li:nth-child(7n + 1) {\n border-left-width: 1px;\n }\n\n li[day-of-week] {\n opacity: 1;\n background-color: var(--calendar-current-week-background-color, var(--md-sys-color-surface));\n /*\n A column header, not content. It was the same 16px and the same ink as the date numbers\n under it, so only the grey band told them apart.\n */\n color: var(--calendar-current-week-color, var(--md-sys-color-on-surface-variant));\n font-size: var(--md-sys-typescale-label-large-size, 0.8125rem);\n font-weight: 500;\n letter-spacing: 0.02em;\n padding: var(--calendar-monthly-label-padding);\n /*\n Centred, and it stays centred.\n\n I moved this to the left to sit over the date numbers, reading\n --calendar-monthly-label-align as this row's alignment. That token is the date label's,\n not this one's, and the reasoning behind the move was wrong anyway: a calendar cell is a\n surface, not a value, and the date is a marker in its corner. This row names the whole\n column, so it belongs over the column's middle - which is also what every calendar the\n reader already uses does.\n */\n text-align: center;\n }\n\n /*\n Three surfaces, three defaults.\n\n All three of these rules used to fall back to surface-variant, so a host that set no tokens\n got the month it is reading, the months either side, and the weekday band in one colour -\n the exact flattening the theme was later written to undo, still sitting in the defaults where\n the next host would meet it. They now default to the same ladder the theme sets: the days you\n are reading are the brightest, the band is a step down, the neighbouring months a step under\n that. Caught by a test running without a theme. [확인함] 2026-09-11\n */\n li[current-month] {\n background-color: var(--calendar-current-month-background-color, var(--md-sys-color-surface-container-lowest));\n color: var(--calendar-current-month-color, var(--md-sys-color-on-surface-variant));\n opacity: 1;\n }\n\n /*\n The month either side, dimmed by a colour rather than by opacity.\n \n opacity fades everything in the cell, marks included, so a holiday on the 31st of last month\n came out as washed pink — the mark still had to be read, only the date was meant to recede.\n A surface and an ink say the same thing and leave the marks alone.\n */\n li[date]:not([current-month]) {\n background-color: var(--calendar-other-month-background-color, var(--md-sys-color-surface-variant));\n color: var(--calendar-other-month-color, var(--md-sys-color-on-surface-variant));\n }\n\n /*\n What the host says is true of the day itself — a non-working day, a shutdown, a cut-off.\n\n The colour arrives on the element as --day-state-color, set by the host through the provider,\n because this component does not know what the word means. See DayState in types.ts.\n\n ── Four rules claim this one property, so their weights are matched on purpose ────────────\n li[current-month] (0,1,1)\n li[date]:not([current-month]) (0,2,1) :not() lends its argument's weight\n li[date][day-state] (0,2,1) ← two attributes to reach the same weight\n li[date][selected] (0,2,1)\n\n Written as li[day-state] it was (0,1,1) and lost to the :not() rule, so a host could mark a\n day outside the current month and nothing happened - caught by the week view's test, where\n every event cell is behind such a rule and the mark vanished entirely.\n\n With the weights level, order decides, and the order is the intent: a day you have selected\n looks selected even if it is a holiday; a holiday you have not touched looks like a holiday.\n */\n li[date][day-state] {\n background-color: var(--day-state-color);\n }\n\n li[date][selected] {\n background-color: var(--calendar-monthly-selected-background-color, var(--md-sys-color-tertiary-container));\n color: var(--calendar-monthly-selected-color, var(--md-sys-color-on-tertiary-container));\n }\n\n /*\n Today is a property of the day, so it is drawn on the day - not only inside it.\n\n It was a pill on the date number and nothing else. That reads once you are already looking\n at the number, and the number is a small thing in a large field:\n\n [확인함] 2026-09-11 badge 39x21 = 812px² · cell 123x137 = 16,829px²\n 4.8% of its own cell, 0.13% of the grid\n\n So the cell carries it now, in two channels that cost nothing structurally.\n\n ── Why a gradient and not a background-color ──────────────────────────────────\n background-color on this element is already spoken for, several times over: the month you\n are reading claims it, the months either side claim it, a drag selection claims it, and a\n host marking non-working days will want it next. A background-image paints ON TOP of the\n colour, so today layers over whichever of those applies instead of competing for the slot.\n A day can be today and outside the month and selected all at once.\n\n ── Why an inset shadow and not a border ──────────────────────────────────────\n This grid's frame is assembled from each cell's own border (0 1px 1px 0, plus a left on\n every seventh). Giving one cell a wider border moves its row by a pixel and the column with\n it. An inset shadow is painted, not laid out, and it stays inside the clip the ol applies.\n\n ── The values ────────────────────────────────────────────────────────────────\n 10% was measured against the neighbouring cell in four theme/mode combinations: dE00 4.4\n and 5.4 on the plant palette, 4.1 and 6.3 on the shell one. 6% sat near 2.5, which is close\n to not being noticed; 12% started to read as a selection rather than a position. The ring\n against the grid's own rule measures 9.85 light and 6.42 dark.\n */\n li[today] {\n background-image: linear-gradient(\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent)),\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent))\n );\n /*\n An outline set inward, not an inset shadow flush to the edge.\n\n Flush, the ring landed on the cell's own 1px rule and read as a crop mark - two lines in the\n same place, with the corner of a square ring meeting the rounded corner of the grid. The\n offset lifts it off that rule and gives it its own edge to be.\n\n And at full primary it was the loudest thing on the screen, louder than the month title,\n which is wrong for a marker that only says where you are. At 72% it is still plainly a line\n and no longer shouting:\n\n [확인함] 2026-09-11 against the cell 5.55 light · 5.84 dark\n against the grid's own rule 3.98 · 3.77\n\n 3.98 matters as much as 5.55: past 3:1 it reads as a different line rather than a thicker\n one. Kept as a translucent mix rather than a computed colour so it still works over whatever\n surface the day has - another month, a holiday, a selection.\n\n outline rather than box-shadow because only outline takes an offset. Nothing here is\n focusable today; if a cell ever is, its focus ring needs a different channel.\n */\n outline: var(--calendar-today-ring-width, 2px) solid\n var(--calendar-today-ring-color, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 72%, transparent));\n outline-offset: var(--calendar-today-ring-inset, -3px);\n }\n\n li[date] {\n min-height: var(--calendar-monthly-date-min-height, 120px);\n max-height: var(--calendar-monthly-date-max-height, none);\n /*\n The clip belongs on the box that carries the ceiling.\n\n It was on the row container inside instead, and that box has no height of its own - it grows\n to fit its rows, so overflow:hidden there had nothing to clip against and the rows simply\n spilled past the capped cell. Caught by the test: the cell held its 160px and the component\n reported nothing cut, because by its own measurement nothing was.\n */\n overflow: hidden;\n }\n\n span[date-label] {\n display: block;\n margin: var(--calendar-monthly-date-label-margin);\n text-align: var(--calendar-monthly-label-align, left);\n /*\n The date is the cell's name, not its content — and its size was never chosen.\n\n With nothing set here it inherited the page's body size and came out 16px at weight 400:\n bigger than the weekday band heading its column (13px/500) and bigger than everything in\n the cell it names. The week view had already been given 13px/500 for the same date, so\n switching views changed the size of the same number. [확인함] 2026-09-11\n\n One step above the band, two above the events, and the weight carries it instead of the\n size:\n\n title 24 / 640\n date 14 / 500 ← here\n band 13 / 500\n events 12 / 400\n */\n font-size: var(--md-sys-typescale-title-small-size, 0.875rem);\n font-weight: 500;\n }\n\n /*\n The date, emphasised - not a filled pill.\n\n It was a solid lozenge in primary with reversed text. That made two maximum-contrast marks in\n one cell once the cell itself took the ring, and this theme's primary is near-black, so in\n light mode the lozenge read as an ink blot rather than an accent. It also made today's label\n 39px wide where every other day's is 114px, so the number's left edge moved on one day of the\n month - and in the week view it wrapped the weekday too, at 61px.\n\n Weight carries it, and only weight. Tinting it as well pointed the emphasis two ways: primary\n is a step away from the body ink, so a bolder today number came out measurably paler than\n every ordinary day beside it — dE00 7.2 dark, 5.7 light, against cell contrast 9.94 where its\n neighbours had 12.97. The ring is the accent-coloured thing; the number is a number.\n\n The colour token stays, defaulting to the ink the cell already gives, for a host whose accent\n is far enough from its body ink for a tint to add something.\n */\n li[today] > span[date-label] {\n font-weight: 700;\n color: var(--calendar-monthly-date-label-color, inherit);\n }\n\n [date] div {\n display: block;\n /* Was the small keyword. */\n font-size: var(--md-sys-typescale-body-small-size, 0.75rem);\n /*\n Events ran into the cell's own borders — measured 0px on the left and 1px on the right,\n while the date number above them sat 4px in. One cell, two left edges, and the titles\n touching the rules on both sides.\n\n The inset reads the date label's own margin, so the two lines stay together.\n */\n padding-inline: var(--calendar-monthly-date-label-margin, 4px);\n }\n\n [event] {\n display: block;\n background-color: var(--calendar-monthly-background-color);\n color: var(--calendar-monthly-color);\n border: var(--calendar-monthly-event-border);\n border-width: var(--calendar-monthly-event-border-width);\n margin: var(--calendar-monthly-event-margin, 0 0 4px 0);\n padding: var(--calendar-monthly-event-padding, 2px 4px 2px 4px);\n\n user-select: all;\n touch-action: all;\n }\n`\n"]}
|
|
1
|
+
{"version":3,"file":"calendar-monthly-styles.js","sourceRoot":"","sources":["../../src/calendar-monthly-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8WvC,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport const CalendarMonthlyStyles = css`\n :host {\n display: flex;\n flex-direction: column;\n\n /*\n One row of controls, one height. The text button was pinned to 24px while the icon\n buttons beside it are 40, so the middle of the three sat in a different band.\n */\n --md-text-button-container-height: 32px;\n --md-icon-button-icon-size: 20px;\n --md-icon-button-state-layer-height: 32px;\n --md-icon-button-state-layer-width: 32px;\n }\n\n [head] {\n display: flex;\n align-items: center;\n /*\n The view switch sat flush against the next button — measured 0px between them.\n\n The space goes on the switch, not on the row: a flex gap also opens a gap between the\n title and the nav, and those two extra pixels each made the header 8px wider than the\n grid under it, which put a horizontal scrollbar on the whole calendar. [확인함] 2026-09-11\n */\n }\n\n [this-month] {\n /* Was the x-large keyword, which is a browser step, not a step of this theme. */\n font-size: var(--md-sys-typescale-headline-small-size, 1.5rem);\n /*\n The month used to be wrapped in <b>. Formatting the whole title through Intl dropped\n that tag and left 24px at weight 400 — large, but with nothing to say it is the title.\n */\n font-weight: var(--md-sys-typescale-headline-small-weight, 640);\n /*\n The header must never be what makes the calendar scroll sideways. A flex item's floor is\n its content, so without this the title pushes the nav out and the grid follows — the same\n rule the day cells needed.\n */\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /*\n The three controls are one group: on a phone the week's title left them too little room and\n the group, a plain block, broke its buttons onto three lines. [확인함] 2026-11-05 · 375px\n */\n [nav] {\n margin-left: auto;\n display: flex;\n align-items: center;\n flex: none;\n }\n\n /* When title and controls do not fit on one line, the controls go under the title. */\n [head] {\n flex-wrap: wrap;\n }\n\n /*\n Room for what the buttons actually occupy.\n\n An md-icon-button paints a 48px touch target around its 32px box, so the rightmost control\n reaches 8px past its own edge. With that control flush to the header's right edge the\n header measured 8px wider than the grid under it, and the whole calendar grew a horizontal\n scrollbar. [확인함] 2026-09-11 — button right 898, its inner target 906, header client 860.\n\n The inset makes room instead of shrinking the target: a smaller target is a worse button,\n and the last control here is slotted by the host, whose size this component cannot know.\n */\n [head] {\n padding-right: var(--calendar-head-inset, 8px);\n }\n\n ::slotted(*) {\n color: var(--md-sys-color-secondary);\n }\n\n ol {\n flex: 1;\n\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n grid-template-rows: max-content;\n\n padding: 0;\n margin: var(--calendar-monthly-ol-margin, 9px 0);\n border-top: var(--calendar-monthly-ol-top-border, 3px solid var(--md-sys-color-outline, #999));\n /*\n The grid closes itself into one box.\n\n Its four sides were already drawn - the rule above for the top, each cell's own right and\n bottom, and the left on every seventh - but the corners stayed square, so a host that put\n a rounded box around the calendar ended up with a round line and a square line meeting at\n the same corner. On the plant page the two were 1px apart down the sides and 9px apart at\n the bottom: a doubled line on the left and right, a gap only at the bottom.\n\n [확인함] 2026-09-11 outer l69 r931 b956 · grid l70 r930 b947\n\n Clipping here rounds the corner cells' own surfaces with it, which is what makes this one\n box rather than a square grid wearing a rounded frame. A host then needs no frame of its\n own - and should not add one, because a second frame is what produced the doubled line.\n */\n border-radius: var(--calendar-monthly-radius, var(--ui-r-small, 6px));\n overflow: hidden;\n }\n\n /*\n * The seven tracks are 1fr, and 1fr's minimum is min-content — so a cell whose chip is\n * white-space: nowrap pushes its own track wide and squeezes the rest.\n *\n * Measured at 700px with one long title: li widths came out\n * [58, 58, 353, 58, 58, 58, 58] without min-width: 0\n * [100 × 7] with it\n *\n * The host page had already asked for text-overflow: ellipsis on that chip, and it never\n * ran: the track grew instead of the text being clipped. [확인함] 2026-09-07\n */\n li {\n position: relative;\n min-width: 0;\n\n min-height: 10%;\n list-style: none;\n border: var(--calendar-monthly-border, 1px solid var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.1)));\n border-width: var(--calendar-monthly-border-width, 0 1px 1px 0px);\n opacity: var(--calendar-monthly-opacity);\n\n user-select: none;\n touch-action: none;\n }\n\n li:nth-child(7n + 1) {\n border-left-width: 1px;\n }\n\n li[day-of-week] {\n opacity: 1;\n background-color: var(--calendar-current-week-background-color, var(--md-sys-color-surface));\n /*\n A column header, not content. It was the same 16px and the same ink as the date numbers\n under it, so only the grey band told them apart.\n */\n color: var(--calendar-current-week-color, var(--md-sys-color-on-surface-variant));\n font-size: var(--md-sys-typescale-label-large-size, 0.8125rem);\n font-weight: 500;\n letter-spacing: 0.02em;\n padding: var(--calendar-monthly-label-padding);\n /*\n Centred, and it stays centred.\n\n I moved this to the left to sit over the date numbers, reading\n --calendar-monthly-label-align as this row's alignment. That token is the date label's,\n not this one's, and the reasoning behind the move was wrong anyway: a calendar cell is a\n surface, not a value, and the date is a marker in its corner. This row names the whole\n column, so it belongs over the column's middle - which is also what every calendar the\n reader already uses does.\n */\n text-align: center;\n }\n\n /*\n Three surfaces, three defaults.\n\n All three of these rules used to fall back to surface-variant, so a host that set no tokens\n got the month it is reading, the months either side, and the weekday band in one colour -\n the exact flattening the theme was later written to undo, still sitting in the defaults where\n the next host would meet it. They now default to the same ladder the theme sets: the days you\n are reading are the brightest, the band is a step down, the neighbouring months a step under\n that. Caught by a test running without a theme. [확인함] 2026-09-11\n */\n li[current-month] {\n background-color: var(--calendar-current-month-background-color, var(--md-sys-color-surface-container-lowest));\n color: var(--calendar-current-month-color, var(--md-sys-color-on-surface-variant));\n opacity: 1;\n }\n\n /*\n The month either side, dimmed by a colour rather than by opacity.\n \n opacity fades everything in the cell, marks included, so a holiday on the 31st of last month\n came out as washed pink — the mark still had to be read, only the date was meant to recede.\n A surface and an ink say the same thing and leave the marks alone.\n */\n li[date]:not([current-month]) {\n background-color: var(--calendar-other-month-background-color, var(--md-sys-color-surface-variant));\n color: var(--calendar-other-month-color, var(--md-sys-color-on-surface-variant));\n }\n\n /*\n What the host says is true of the day itself — a non-working day, a shutdown, a cut-off.\n\n The colour arrives on the element as --day-state-color, set by the host through the provider,\n because this component does not know what the word means. See DayState in types.ts.\n\n ── Four rules claim this one property, so their weights are matched on purpose ────────────\n li[current-month] (0,1,1)\n li[date]:not([current-month]) (0,2,1) :not() lends its argument's weight\n li[date][day-state] (0,2,1) ← two attributes to reach the same weight\n li[date][selected] (0,2,1)\n\n Written as li[day-state] it was (0,1,1) and lost to the :not() rule, so a host could mark a\n day outside the current month and nothing happened - caught by the week view's test, where\n every event cell is behind such a rule and the mark vanished entirely.\n\n With the weights level, order decides, and the order is the intent: a day you have selected\n looks selected even if it is a holiday; a holiday you have not touched looks like a holiday.\n */\n li[date][day-state] {\n background-color: var(--day-state-color);\n }\n\n li[date][selected] {\n background-color: var(--calendar-monthly-selected-background-color, var(--md-sys-color-tertiary-container));\n color: var(--calendar-monthly-selected-color, var(--md-sys-color-on-tertiary-container));\n }\n\n /*\n Today is a property of the day, so it is drawn on the day - not only inside it.\n\n It was a pill on the date number and nothing else. That reads once you are already looking\n at the number, and the number is a small thing in a large field:\n\n [확인함] 2026-09-11 badge 39x21 = 812px² · cell 123x137 = 16,829px²\n 4.8% of its own cell, 0.13% of the grid\n\n So the cell carries it now, in two channels that cost nothing structurally.\n\n ── Why a gradient and not a background-color ──────────────────────────────────\n background-color on this element is already spoken for, several times over: the month you\n are reading claims it, the months either side claim it, a drag selection claims it, and a\n host marking non-working days will want it next. A background-image paints ON TOP of the\n colour, so today layers over whichever of those applies instead of competing for the slot.\n A day can be today and outside the month and selected all at once.\n\n ── Why an inset shadow and not a border ──────────────────────────────────────\n This grid's frame is assembled from each cell's own border (0 1px 1px 0, plus a left on\n every seventh). Giving one cell a wider border moves its row by a pixel and the column with\n it. An inset shadow is painted, not laid out, and it stays inside the clip the ol applies.\n\n ── The values ────────────────────────────────────────────────────────────────\n 10% was measured against the neighbouring cell in four theme/mode combinations: dE00 4.4\n and 5.4 on the plant palette, 4.1 and 6.3 on the shell one. 6% sat near 2.5, which is close\n to not being noticed; 12% started to read as a selection rather than a position. The ring\n against the grid's own rule measures 9.85 light and 6.42 dark.\n */\n li[today] {\n background-image: linear-gradient(\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent)),\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent))\n );\n /*\n An outline set inward, not an inset shadow flush to the edge.\n\n Flush, the ring landed on the cell's own 1px rule and read as a crop mark - two lines in the\n same place, with the corner of a square ring meeting the rounded corner of the grid. The\n offset lifts it off that rule and gives it its own edge to be.\n\n And at full primary it was the loudest thing on the screen, louder than the month title,\n which is wrong for a marker that only says where you are. At 72% it is still plainly a line\n and no longer shouting:\n\n [확인함] 2026-09-11 against the cell 5.55 light · 5.84 dark\n against the grid's own rule 3.98 · 3.77\n\n 3.98 matters as much as 5.55: past 3:1 it reads as a different line rather than a thicker\n one. Kept as a translucent mix rather than a computed colour so it still works over whatever\n surface the day has - another month, a holiday, a selection.\n\n outline rather than box-shadow because only outline takes an offset. Nothing here is\n focusable today; if a cell ever is, its focus ring needs a different channel.\n */\n outline: var(--calendar-today-ring-width, 2px) solid\n var(--calendar-today-ring-color, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 72%, transparent));\n outline-offset: var(--calendar-today-ring-inset, -3px);\n }\n\n li[date] {\n min-height: var(--calendar-monthly-date-min-height, 120px);\n max-height: var(--calendar-monthly-date-max-height, none);\n /*\n The clip belongs on the box that carries the ceiling.\n\n It was on the row container inside instead, and that box has no height of its own - it grows\n to fit its rows, so overflow:hidden there had nothing to clip against and the rows simply\n spilled past the capped cell. Caught by the test: the cell held its 160px and the component\n reported nothing cut, because by its own measurement nothing was.\n */\n overflow: hidden;\n }\n\n span[date-label] {\n display: block;\n margin: var(--calendar-monthly-date-label-margin);\n text-align: var(--calendar-monthly-label-align, left);\n /*\n The date is the cell's name, not its content — and its size was never chosen.\n\n With nothing set here it inherited the page's body size and came out 16px at weight 400:\n bigger than the weekday band heading its column (13px/500) and bigger than everything in\n the cell it names. The week view had already been given 13px/500 for the same date, so\n switching views changed the size of the same number. [확인함] 2026-09-11\n\n One step above the band, two above the events, and the weight carries it instead of the\n size:\n\n title 24 / 640\n date 14 / 500 ← here\n band 13 / 500\n events 12 / 400\n */\n font-size: var(--md-sys-typescale-title-small-size, 0.875rem);\n font-weight: 500;\n }\n\n /*\n The date, emphasised - not a filled pill.\n\n It was a solid lozenge in primary with reversed text. That made two maximum-contrast marks in\n one cell once the cell itself took the ring, and this theme's primary is near-black, so in\n light mode the lozenge read as an ink blot rather than an accent. It also made today's label\n 39px wide where every other day's is 114px, so the number's left edge moved on one day of the\n month - and in the week view it wrapped the weekday too, at 61px.\n\n Weight carries it, and only weight. Tinting it as well pointed the emphasis two ways: primary\n is a step away from the body ink, so a bolder today number came out measurably paler than\n every ordinary day beside it — dE00 7.2 dark, 5.7 light, against cell contrast 9.94 where its\n neighbours had 12.97. The ring is the accent-coloured thing; the number is a number.\n\n The colour token stays, defaulting to the ink the cell already gives, for a host whose accent\n is far enough from its body ink for a tint to add something.\n */\n li[today] > span[date-label] {\n font-weight: 700;\n color: var(--calendar-monthly-date-label-color, inherit);\n }\n\n [date] div {\n display: block;\n /* Was the small keyword. */\n font-size: var(--md-sys-typescale-body-small-size, 0.75rem);\n /*\n Events ran into the cell's own borders — measured 0px on the left and 1px on the right,\n while the date number above them sat 4px in. One cell, two left edges, and the titles\n touching the rules on both sides.\n\n The inset reads the date label's own margin, so the two lines stay together.\n */\n padding-inline: var(--calendar-monthly-date-label-margin, 4px);\n }\n\n [event] {\n display: block;\n background-color: var(--calendar-monthly-background-color);\n color: var(--calendar-monthly-color);\n border: var(--calendar-monthly-event-border);\n border-width: var(--calendar-monthly-event-border-width);\n margin: var(--calendar-monthly-event-margin, 0 0 4px 0);\n padding: var(--calendar-monthly-event-padding, 2px 4px 2px 4px);\n\n user-select: all;\n touch-action: all;\n }\n`\n"]}
|
|
@@ -78,9 +78,9 @@ let CalendarMonthly = class CalendarMonthly extends LitElement {
|
|
|
78
78
|
>
|
|
79
79
|
<md-icon>chevron_right</md-icon>
|
|
80
80
|
</md-icon-button>
|
|
81
|
+
<!-- The host's view switch is one of the controls: it moves with them when the header wraps. -->
|
|
82
|
+
<slot></slot>
|
|
81
83
|
</div>
|
|
82
|
-
|
|
83
|
-
<slot></slot>
|
|
84
84
|
</div>
|
|
85
85
|
|
|
86
86
|
<ol
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-monthly.js","sourceRoot":"","sources":["../../src/calendar-monthly.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/text-button.js'\nimport '@material/web/iconbutton/icon-button.js'\nimport '@material/web/icon/icon.js'\n\nimport dayjs, { Dayjs } from 'dayjs/esm/index.js'\nimport { html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { TooltipReactiveController } from '@operato/utils'\n\nimport { CalendarMonthlyStyles } from './calendar-monthly-styles.js'\nimport { reportDayOverflow } from './day-overflow.js'\nimport {\n BizEvent,\n CALENDAR,\n DayState,\n EventProvider,\n isToday,\n dayLabel,\n monthTitle,\n nextMonthLabel,\n previousMonthLabel,\n todayLabel,\n weekdayNames\n} from './types.js'\n\n@customElement('calendar-monthly')\nexport class CalendarMonthly extends LitElement {\n static styles = [CalendarMonthlyStyles]\n\n @property({ type: Object }) eventProvider?: EventProvider\n\n @state() year: number = dayjs().year()\n @state() month: number = dayjs().month()\n @state() calendar?: CALENDAR\n @state() eventMap?: Map<Date, BizEvent[]>\n /** What is true of the days themselves, if the host answers for them. See {@link DayState}. */\n @state() dayStateMap?: Map<Date, DayState>\n @state() selections?: [Date, Date] | []\n\n @state() pointerDownDate?: Date | null\n\n /** Last reported overflow, so the host is not told the same thing after every render. */\n private lastOverflow = ''\n\n /*\n * Event titles are drawn on one nowrap line and cut with an ellipsis, so the full name only\n * exists in a tooltip. Hosts were reaching for the browser's own `title`, which waits about a\n * second and cannot be styled — measured on the plant calendar.\n *\n * data-grist already runs this controller on its header and its cells. It waits 450ms so a\n * pointer crossing the grid does not trail tooltips behind it, then drops the wait once one\n * is up, and it only fires on elements that actually overflow — which is exactly the set of\n * titles worth expanding.\n *\n * Hosts mark the rows they want expanded with data-reactive-tooltip. The listener sits on\n * this shadow root, where the host's own event templates are rendered.\n */\n private tooltip = new TooltipReactiveController(this, {\n /*\n * Read the attribute's value, not the row's text.\n *\n * The controller treats the attribute as a marker and otherwise repeats what is already on\n * screen, which for a cut title is at least the whole title. But a host writes the line it\n * wants read - the plant calendar puts the kind, the order and where it runs in there - and\n * without this that sentence was thrown away. [확인함] 2026-09-11\n */\n content: element => element.getAttribute('data-reactive-tooltip') || element.textContent?.trim() || ''\n })\n\n render() {\n return html`\n <div head>\n <div this-month>${monthTitle(this.year, this.month)}</div>\n\n <div nav>\n <!--\n Chevrons, not the \"<\" and \">\" characters that were here. Those are text: they take\n the text colour and weight, sit on the text baseline, and a screen reader says\n \"less than\". An icon button is also a target, which the bare glyph was not.\n -->\n <md-icon-button\n aria-label=${previousMonthLabel()}\n title=${previousMonthLabel()}\n @click=${() => {\n this.moveTo(dayjs(new Date(this.year, this.month, 1)).subtract(1, 'month'))\n }}\n >\n <md-icon>chevron_left</md-icon>\n </md-icon-button>\n <md-text-button\n @click=${() => {\n this.moveTo(dayjs(new Date(dayjs().year(), dayjs().month(), 1)))\n }}\n >${todayLabel()}</md-text-button\n >\n <md-icon-button\n aria-label=${nextMonthLabel()}\n title=${nextMonthLabel()}\n @click=${() => {\n this.moveTo(dayjs(new Date(this.year, this.month, 1)).add(1, 'month'))\n }}\n >\n <md-icon>chevron_right</md-icon>\n </md-icon-button>\n </div>\n\n <slot></slot>\n </div>\n\n <ol\n @pointerdown=${this.handlePointerDown}\n @pointermove=${this.handlePointerMove}\n @pointerup=${this.handlePointerUp}\n >\n ${weekdayNames().map(name => html` <li day-of-week>${name}</li> `)}\n ${this.calendar?.map(date => {\n const [from, to] = this.selections || ([] as any)\n const { date: thisDate } = date\n const selected = from && to && thisDate >= from && thisDate <= to\n const dayState = this.dayStateMap?.get(thisDate)\n\n return html`\n <li\n ?today=${date.today}\n ?current-month=${date.thisMonth}\n ?selected=${selected}\n day-state=${ifDefined(dayState?.name)}\n style=${ifDefined(dayState && `--day-state-color:${dayState.color}`)}\n .date=${thisDate}\n date\n >\n <span date-label>${dayLabel(date.date, !!date.withMonth)}</span>\n <div>\n ${(this.eventMap?.get(date?.date) || []).map(({ title, color, template }) =>\n template ? template : html`<span event .style=\"border-color: ${color};\">${title}</span>`\n )}\n </div>\n </li>\n `\n })}\n </ol>\n `\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('year') || changes.has('month') || changes.has('eventProvider')) {\n const currentMonth = this.createDaysForCurrentMonth(this.year, this.month)\n\n const calendar = [\n ...this.createDaysForPreviousMonth(this.year, this.month, currentMonth),\n ...currentMonth,\n ...this.createDaysForNextMonth(this.year, this.month, currentMonth)\n ]\n\n /*\n * Both questions go out together. A host that keeps the day's events and the day's own\n * state in one place answers both from one round trip, and the two always describe the\n * same grid - asking them apart would let a month change land between them.\n */\n const [eventMap, dayStateMap] = await Promise.all([\n this.eventProvider?.fetchEventsForCalendar(calendar),\n this.eventProvider?.fetchDayStatesForCalendar?.(calendar)\n ])\n\n this.eventMap = eventMap\n this.dayStateMap = dayStateMap\n this.calendar = calendar\n }\n\n /*\n * After the rows are laid out, not before. A cap only bites once the browser has placed the\n * children, so this has to run on every render - the grid also reflows when the host swaps\n * its templates or the window changes width.\n */\n this.lastOverflow = reportDayOverflow(this, this.shadowRoot, this.lastOverflow)\n }\n\n handlePointerDown(event: PointerEvent) {\n const target = event.target as HTMLElement\n\n if (!target.hasAttribute('date') && !target.hasAttribute('date-label')) {\n return\n }\n\n const dateElement = target.closest('[date]') as HTMLElement\n const from = (dateElement as any).date\n\n this.pointerDownDate = from\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerMove(event: PointerEvent) {\n const from = this.pointerDownDate\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerUp(event: PointerEvent) {\n const from = this.pointerDownDate\n\n this.pointerDownDate = null\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n this.dispatchEvent(\n new CustomEvent('select-date', {\n detail: this.selections,\n bubbles: true,\n composed: true\n })\n )\n\n event.preventDefault()\n }\n\n moveTo(month: Dayjs) {\n this.year = month.year()\n this.month = month.month()\n\n this.dispatchEvent(\n new CustomEvent('change-month', {\n detail: { year: this.year, month: this.month + 1 }, // 0~11월이라 +1 해서 이벤트 전파\n bubbles: true,\n composed: true\n })\n )\n }\n\n createDaysForCurrentMonth(year: number, month: number): CALENDAR {\n return [...Array(dayjs(new Date(year, month, 1)).daysInMonth())].map((day, index) => {\n const date = new Date(year, month, index + 1)\n const withMonth = index == 0\n return {\n date,\n label: dayLabel(date, withMonth),\n withMonth,\n thisMonth: true,\n today: isToday(date)\n }\n })\n }\n\n createDaysForPreviousMonth(year: number, month: number, currentMonth: CALENDAR): CALENDAR {\n const previousMonth = dayjs(new Date(year, month, 1)).subtract(1, 'month')\n\n const visibleNumberOfDaysFromPreviousMonth = (dayjs(currentMonth[0].date) as any).weekday()\n\n const previousMonthLastMondayDayOfMonth = dayjs(currentMonth[0].date)\n .subtract(visibleNumberOfDaysFromPreviousMonth, 'day')\n .date()\n\n return [...Array(visibleNumberOfDaysFromPreviousMonth)].map((day, index) => {\n const date = new Date(previousMonth.year(), previousMonth.month(), previousMonthLastMondayDayOfMonth + index)\n const withMonth = index == 0\n return {\n date,\n label: dayLabel(date, withMonth),\n withMonth,\n thisMonth: false,\n today: isToday(date)\n }\n })\n }\n\n createDaysForNextMonth(year: number, month: number, currentMonth: CALENDAR): CALENDAR {\n const nextMonth = dayjs(new Date(year, month, 1)).add(1, 'month')\n\n const visibleNumberOfDaysFromNextMonth = 6 - (dayjs(new Date(year, month, currentMonth.length)) as any).weekday()\n\n return [...Array(visibleNumberOfDaysFromNextMonth)].map((day, index) => {\n const date = new Date(nextMonth.year(), nextMonth.month(), index + 1)\n const withMonth = index == 0\n return {\n date,\n label: dayLabel(date, withMonth),\n withMonth,\n thisMonth: false,\n today: isToday(date)\n }\n })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"calendar-monthly.js","sourceRoot":"","sources":["../../src/calendar-monthly.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/text-button.js'\nimport '@material/web/iconbutton/icon-button.js'\nimport '@material/web/icon/icon.js'\n\nimport dayjs, { Dayjs } from 'dayjs/esm/index.js'\nimport { html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { TooltipReactiveController } from '@operato/utils'\n\nimport { CalendarMonthlyStyles } from './calendar-monthly-styles.js'\nimport { reportDayOverflow } from './day-overflow.js'\nimport {\n BizEvent,\n CALENDAR,\n DayState,\n EventProvider,\n isToday,\n dayLabel,\n monthTitle,\n nextMonthLabel,\n previousMonthLabel,\n todayLabel,\n weekdayNames\n} from './types.js'\n\n@customElement('calendar-monthly')\nexport class CalendarMonthly extends LitElement {\n static styles = [CalendarMonthlyStyles]\n\n @property({ type: Object }) eventProvider?: EventProvider\n\n @state() year: number = dayjs().year()\n @state() month: number = dayjs().month()\n @state() calendar?: CALENDAR\n @state() eventMap?: Map<Date, BizEvent[]>\n /** What is true of the days themselves, if the host answers for them. See {@link DayState}. */\n @state() dayStateMap?: Map<Date, DayState>\n @state() selections?: [Date, Date] | []\n\n @state() pointerDownDate?: Date | null\n\n /** Last reported overflow, so the host is not told the same thing after every render. */\n private lastOverflow = ''\n\n /*\n * Event titles are drawn on one nowrap line and cut with an ellipsis, so the full name only\n * exists in a tooltip. Hosts were reaching for the browser's own `title`, which waits about a\n * second and cannot be styled — measured on the plant calendar.\n *\n * data-grist already runs this controller on its header and its cells. It waits 450ms so a\n * pointer crossing the grid does not trail tooltips behind it, then drops the wait once one\n * is up, and it only fires on elements that actually overflow — which is exactly the set of\n * titles worth expanding.\n *\n * Hosts mark the rows they want expanded with data-reactive-tooltip. The listener sits on\n * this shadow root, where the host's own event templates are rendered.\n */\n private tooltip = new TooltipReactiveController(this, {\n /*\n * Read the attribute's value, not the row's text.\n *\n * The controller treats the attribute as a marker and otherwise repeats what is already on\n * screen, which for a cut title is at least the whole title. But a host writes the line it\n * wants read - the plant calendar puts the kind, the order and where it runs in there - and\n * without this that sentence was thrown away. [확인함] 2026-09-11\n */\n content: element => element.getAttribute('data-reactive-tooltip') || element.textContent?.trim() || ''\n })\n\n render() {\n return html`\n <div head>\n <div this-month>${monthTitle(this.year, this.month)}</div>\n\n <div nav>\n <!--\n Chevrons, not the \"<\" and \">\" characters that were here. Those are text: they take\n the text colour and weight, sit on the text baseline, and a screen reader says\n \"less than\". An icon button is also a target, which the bare glyph was not.\n -->\n <md-icon-button\n aria-label=${previousMonthLabel()}\n title=${previousMonthLabel()}\n @click=${() => {\n this.moveTo(dayjs(new Date(this.year, this.month, 1)).subtract(1, 'month'))\n }}\n >\n <md-icon>chevron_left</md-icon>\n </md-icon-button>\n <md-text-button\n @click=${() => {\n this.moveTo(dayjs(new Date(dayjs().year(), dayjs().month(), 1)))\n }}\n >${todayLabel()}</md-text-button\n >\n <md-icon-button\n aria-label=${nextMonthLabel()}\n title=${nextMonthLabel()}\n @click=${() => {\n this.moveTo(dayjs(new Date(this.year, this.month, 1)).add(1, 'month'))\n }}\n >\n <md-icon>chevron_right</md-icon>\n </md-icon-button>\n <!-- The host's view switch is one of the controls: it moves with them when the header wraps. -->\n <slot></slot>\n </div>\n </div>\n\n <ol\n @pointerdown=${this.handlePointerDown}\n @pointermove=${this.handlePointerMove}\n @pointerup=${this.handlePointerUp}\n >\n ${weekdayNames().map(name => html` <li day-of-week>${name}</li> `)}\n ${this.calendar?.map(date => {\n const [from, to] = this.selections || ([] as any)\n const { date: thisDate } = date\n const selected = from && to && thisDate >= from && thisDate <= to\n const dayState = this.dayStateMap?.get(thisDate)\n\n return html`\n <li\n ?today=${date.today}\n ?current-month=${date.thisMonth}\n ?selected=${selected}\n day-state=${ifDefined(dayState?.name)}\n style=${ifDefined(dayState && `--day-state-color:${dayState.color}`)}\n .date=${thisDate}\n date\n >\n <span date-label>${dayLabel(date.date, !!date.withMonth)}</span>\n <div>\n ${(this.eventMap?.get(date?.date) || []).map(({ title, color, template }) =>\n template ? template : html`<span event .style=\"border-color: ${color};\">${title}</span>`\n )}\n </div>\n </li>\n `\n })}\n </ol>\n `\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('year') || changes.has('month') || changes.has('eventProvider')) {\n const currentMonth = this.createDaysForCurrentMonth(this.year, this.month)\n\n const calendar = [\n ...this.createDaysForPreviousMonth(this.year, this.month, currentMonth),\n ...currentMonth,\n ...this.createDaysForNextMonth(this.year, this.month, currentMonth)\n ]\n\n /*\n * Both questions go out together. A host that keeps the day's events and the day's own\n * state in one place answers both from one round trip, and the two always describe the\n * same grid - asking them apart would let a month change land between them.\n */\n const [eventMap, dayStateMap] = await Promise.all([\n this.eventProvider?.fetchEventsForCalendar(calendar),\n this.eventProvider?.fetchDayStatesForCalendar?.(calendar)\n ])\n\n this.eventMap = eventMap\n this.dayStateMap = dayStateMap\n this.calendar = calendar\n }\n\n /*\n * After the rows are laid out, not before. A cap only bites once the browser has placed the\n * children, so this has to run on every render - the grid also reflows when the host swaps\n * its templates or the window changes width.\n */\n this.lastOverflow = reportDayOverflow(this, this.shadowRoot, this.lastOverflow)\n }\n\n handlePointerDown(event: PointerEvent) {\n const target = event.target as HTMLElement\n\n if (!target.hasAttribute('date') && !target.hasAttribute('date-label')) {\n return\n }\n\n const dateElement = target.closest('[date]') as HTMLElement\n const from = (dateElement as any).date\n\n this.pointerDownDate = from\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerMove(event: PointerEvent) {\n const from = this.pointerDownDate\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerUp(event: PointerEvent) {\n const from = this.pointerDownDate\n\n this.pointerDownDate = null\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n this.dispatchEvent(\n new CustomEvent('select-date', {\n detail: this.selections,\n bubbles: true,\n composed: true\n })\n )\n\n event.preventDefault()\n }\n\n moveTo(month: Dayjs) {\n this.year = month.year()\n this.month = month.month()\n\n this.dispatchEvent(\n new CustomEvent('change-month', {\n detail: { year: this.year, month: this.month + 1 }, // 0~11월이라 +1 해서 이벤트 전파\n bubbles: true,\n composed: true\n })\n )\n }\n\n createDaysForCurrentMonth(year: number, month: number): CALENDAR {\n return [...Array(dayjs(new Date(year, month, 1)).daysInMonth())].map((day, index) => {\n const date = new Date(year, month, index + 1)\n const withMonth = index == 0\n return {\n date,\n label: dayLabel(date, withMonth),\n withMonth,\n thisMonth: true,\n today: isToday(date)\n }\n })\n }\n\n createDaysForPreviousMonth(year: number, month: number, currentMonth: CALENDAR): CALENDAR {\n const previousMonth = dayjs(new Date(year, month, 1)).subtract(1, 'month')\n\n const visibleNumberOfDaysFromPreviousMonth = (dayjs(currentMonth[0].date) as any).weekday()\n\n const previousMonthLastMondayDayOfMonth = dayjs(currentMonth[0].date)\n .subtract(visibleNumberOfDaysFromPreviousMonth, 'day')\n .date()\n\n return [...Array(visibleNumberOfDaysFromPreviousMonth)].map((day, index) => {\n const date = new Date(previousMonth.year(), previousMonth.month(), previousMonthLastMondayDayOfMonth + index)\n const withMonth = index == 0\n return {\n date,\n label: dayLabel(date, withMonth),\n withMonth,\n thisMonth: false,\n today: isToday(date)\n }\n })\n }\n\n createDaysForNextMonth(year: number, month: number, currentMonth: CALENDAR): CALENDAR {\n const nextMonth = dayjs(new Date(year, month, 1)).add(1, 'month')\n\n const visibleNumberOfDaysFromNextMonth = 6 - (dayjs(new Date(year, month, currentMonth.length)) as any).weekday()\n\n return [...Array(visibleNumberOfDaysFromNextMonth)].map((day, index) => {\n const date = new Date(nextMonth.year(), nextMonth.month(), index + 1)\n const withMonth = index == 0\n return {\n date,\n label: dayLabel(date, withMonth),\n withMonth,\n thisMonth: false,\n today: isToday(date)\n }\n })\n }\n}\n"]}
|
|
@@ -52,8 +52,20 @@ export const CalendarWeeklyStyles = css `
|
|
|
52
52
|
white-space: nowrap;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
/*
|
|
56
|
+
The three controls are one group: on a phone the week's title left them too little room and
|
|
57
|
+
the group, a plain block, broke its buttons onto three lines. [확인함] 2026-11-05 · 375px
|
|
58
|
+
*/
|
|
55
59
|
[nav] {
|
|
56
60
|
margin-left: auto;
|
|
61
|
+
display: flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
flex: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* When title and controls do not fit on one line, the controls go under the title. */
|
|
67
|
+
[head] {
|
|
68
|
+
flex-wrap: wrap;
|
|
57
69
|
}
|
|
58
70
|
|
|
59
71
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-weekly-styles.js","sourceRoot":"","sources":["../../src/calendar-weekly-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqQtC,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport const CalendarWeeklyStyles = css`\n :host {\n display: flex;\n flex-direction: column;\n color: var(--calendar-weekly-text-color, var(--md-sys-color-on-surface-variant, #585858));\n\n /*\n One row of controls, one height. The text button was pinned to 24px while the icon\n buttons beside it are 40, so the middle of the three sat in a different band.\n */\n --md-text-button-container-height: 32px;\n --md-icon-button-icon-size: 20px;\n --md-icon-button-state-layer-height: 32px;\n --md-icon-button-state-layer-width: 32px;\n }\n\n [head] {\n display: flex;\n align-items: center;\n /*\n The view switch sat flush against the next button — measured 0px between them.\n\n The space goes on the switch, not on the row: a flex gap also opens a gap between the\n title and the nav, and those two extra pixels each made the header 8px wider than the\n grid under it, which put a horizontal scrollbar on the whole calendar. [확인함] 2026-09-11\n */\n }\n\n [head-week] {\n display: flex;\n /* left is not a value align-items accepts — the rule did nothing. */\n align-items: flex-start;\n }\n\n [this-week] {\n /* Was the x-large keyword, which is a browser step, not a step of this theme. */\n font-size: var(--md-sys-typescale-headline-small-size, 1.5rem);\n /*\n The month used to be wrapped in <b>. Formatting the whole title through Intl dropped\n that tag and left 24px at weight 400 — large, but with nothing to say it is the title.\n */\n font-weight: var(--md-sys-typescale-headline-small-weight, 640);\n /*\n The header must never be what makes the calendar scroll sideways. A flex item's floor is\n its content, so without this the title pushes the nav out and the grid follows — the same\n rule the day cells needed.\n */\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n [nav] {\n margin-left: auto;\n }\n\n /*\n Room for what the buttons actually occupy.\n\n An md-icon-button paints a 48px touch target around its 32px box, so the rightmost control\n reaches 8px past its own edge. With that control flush to the header's right edge the\n header measured 8px wider than the grid under it, and the whole calendar grew a horizontal\n scrollbar. [확인함] 2026-09-11 — button right 898, its inner target 906, header client 860.\n\n The inset makes room instead of shrinking the target: a smaller target is a worse button,\n and the last control here is slotted by the host, whose size this component cannot know.\n */\n [head] {\n padding-right: var(--calendar-head-inset, 8px);\n }\n\n /*\n * Same token the monthly view uses for its slotted switch.\n *\n * This used to override --md-sys-color-primary inside the component with\n * rgba(var(--secondary-color-rgb), 0.8), which never produced a color:\n *\n * host does not define --secondary-color-rgb the token resolves to empty, so nothing\n * reading it gets a color at all\n * host defines it as \"12 34 56\" rgba(12 34 56, 0.8) mixes space-separated\n * channels into the comma syntax — invalid,\n * and the property falls back to black\n *\n * [확인함] 2026-09-07 · both cases measured in a browser\n */\n ::slotted(*) {\n color: var(--md-sys-color-secondary);\n }\n\n ol {\n flex: 1;\n\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n grid-template-rows: max-content;\n\n padding: 0;\n margin: var(--calendar-weekly-ol-margin, 9px 0);\n border-top: var(--calendar-weekly-ol-top-border, 3px solid var(--md-sys-color-outline, #999));\n /* Same as the month view — the grid is one box and closes its own corners. */\n border-radius: var(--calendar-weekly-radius, var(--ui-r-small, 6px));\n overflow: hidden;\n }\n\n /*\n * The seven tracks are 1fr, and 1fr's minimum is min-content — so a cell whose chip is\n * white-space: nowrap pushes its own track wide and squeezes the rest.\n *\n * Measured at 700px with one long title: li widths came out\n * [58, 58, 353, 58, 58, 58, 58] without min-width: 0\n * [100 × 7] with it\n *\n * The host page had already asked for text-overflow: ellipsis on that chip, and it never\n * ran: the track grew instead of the text being clipped. [확인함] 2026-09-07\n */\n li {\n position: relative;\n min-width: 0;\n\n list-style: none;\n border: var(--calendar-weekly-border, 1px solid var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.1)));\n border-width: var(--calendar-weekly-border-width, 0 1px 1px 0px);\n opacity: var(--calendar-weekly-opacity);\n\n user-select: none;\n touch-action: none;\n }\n\n li:nth-child(7n + 1) {\n border-left-width: 1px;\n }\n\n li[day-of-week] {\n opacity: 1;\n background-color: var(--calendar-current-week-background-color, var(--md-sys-color-surface));\n color: var(--calendar-current-week-color, var(--md-sys-color-on-surface));\n padding: var(--calendar-weekly-label-padding);\n text-align: center;\n }\n\n /*\n The cells that hold the events.\n\n They carried no surface at all. This view draws two rows of seven - the dates on top, the\n events under them - and only the date row was painted, by the rule above. The event row was\n transparent, so it showed whatever the host put behind the calendar, which on the plant page\n is the same colour as the date band. [확인함] 2026-09-11 — both measured rgb(240,242,244),\n and the outer box behind them the same again.\n\n So the week view never got the separation the month view has: there, the days you are\n reading are the brightest surface and the band above them is a step down. Same ladder here.\n\n A rule for li[current-week] used to sit in this place. Nothing has ever carried that\n attribute - the markup writes day-of-week on the date row and nothing on this one - so it\n painted nothing, while reading the token that the date band above actually uses.\n */\n li[date]:not([day-of-week]) {\n background-color: var(--calendar-weekly-date-background-color, var(--md-sys-color-surface-container-lowest));\n }\n\n /*\n What the host says is true of the day itself — the same channel and ordering rule as the\n month view, which carries the reasoning.\n\n Both of a day's cells take it here, the date band as well as the events under it, so a\n non-working day reads as a whole column rather than a tinted strip with an untouched body.\n */\n li[date][day-state] {\n background-color: var(--day-state-color);\n }\n\n li[date][selected] {\n background-color: var(--calendar-weekly-selected-background-color, var(--md-sys-color-tertiary-container));\n color: var(--calendar-weekly-selected-color, var(--md-sys-color-on-tertiary-container));\n }\n\n /*\n Today, on the day rather than only inside it — the same token and the same reasoning as the\n month view, which explains the gradient and the measured 10%.\n\n No ring here, though. A day in this view is a whole column, two cells tall, and an inset ring\n on each of them would draw a doubled rule across the middle where they meet. The column is\n also large enough that the tint alone is found immediately — the month view needs the ring\n because its cell is one of thirty-five.\n */\n li[today] {\n background-image: linear-gradient(\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent)),\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent))\n );\n }\n\n span[date-label] {\n display: block;\n margin: var(--calendar-weekly-date-label-margin);\n text-align: var(--calendar-weekly-label-align, center);\n /*\n A column header, not content. It stood at the body's size and ink, so the row of dates\n read as another row of data rather than as the heading of its column.\n */\n font-size: var(--md-sys-typescale-label-large-size, 0.8125rem);\n font-weight: 500;\n color: var(--md-sys-color-on-surface-variant);\n }\n\n /*\n The date, emphasised - not a filled pill.\n\n Two rules used to sit here, one setting a weight and the next overriding it with a lozenge.\n\n It was a solid lozenge in primary with reversed text. That made two maximum-contrast marks in\n one cell once the cell itself took the ring, and this theme's primary is near-black, so in\n light mode the lozenge read as an ink blot rather than an accent. It also made today's label\n 39px wide where every other day's is 114px, so the number's left edge moved on one day of the\n month - and in the week view it wrapped the weekday too, at 61px.\n\n Weight carries it, and only weight. Tinting it as well pointed the emphasis two ways: primary\n is a step away from the body ink, so a bolder today number came out measurably paler than\n every ordinary day beside it — dE00 7.2 dark, 5.7 light, against cell contrast 9.94 where its\n neighbours had 12.97. The ring is the accent-coloured thing; the number is a number.\n\n The colour token stays, defaulting to the ink the cell already gives, for a host whose accent\n is far enough from its body ink for a tint to add something.\n */\n li[today] > span[date-label] {\n font-weight: 700;\n color: var(--calendar-weekly-date-label-color, inherit);\n }\n\n li[date] {\n max-height: var(--calendar-weekly-date-max-height, none);\n /* The clip goes on the box that carries the ceiling — see the month view. */\n overflow: hidden;\n }\n\n [date] div {\n display: block;\n /* Was the small keyword. */\n font-size: var(--md-sys-typescale-body-small-size, 0.75rem);\n /*\n Events ran into the cell's own borders — measured 0px on the left and 1px on the right,\n while the date number above them sat 4px in. One cell, two left edges, and the titles\n touching the rules on both sides.\n\n The inset reads the date label's own margin, so the two lines stay together.\n */\n padding-inline: var(--calendar-weekly-date-label-margin, 4px);\n }\n\n [event] {\n display: block;\n background-color: var(--calendar-weekly-background-color);\n border: var(--calendar-weekly-event-border);\n border-width: var(--calendar-weekly-event-border-width);\n margin: var(--calendar-weekly-event-margin, 0 0 4px 0);\n padding: var(--calendar-weekly-event-padding, 2px 4px 2px 4px);\n\n user-select: all;\n touch-action: all;\n }\n`\n"]}
|
|
1
|
+
{"version":3,"file":"calendar-weekly-styles.js","sourceRoot":"","sources":["../../src/calendar-weekly-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiRtC,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport const CalendarWeeklyStyles = css`\n :host {\n display: flex;\n flex-direction: column;\n color: var(--calendar-weekly-text-color, var(--md-sys-color-on-surface-variant, #585858));\n\n /*\n One row of controls, one height. The text button was pinned to 24px while the icon\n buttons beside it are 40, so the middle of the three sat in a different band.\n */\n --md-text-button-container-height: 32px;\n --md-icon-button-icon-size: 20px;\n --md-icon-button-state-layer-height: 32px;\n --md-icon-button-state-layer-width: 32px;\n }\n\n [head] {\n display: flex;\n align-items: center;\n /*\n The view switch sat flush against the next button — measured 0px between them.\n\n The space goes on the switch, not on the row: a flex gap also opens a gap between the\n title and the nav, and those two extra pixels each made the header 8px wider than the\n grid under it, which put a horizontal scrollbar on the whole calendar. [확인함] 2026-09-11\n */\n }\n\n [head-week] {\n display: flex;\n /* left is not a value align-items accepts — the rule did nothing. */\n align-items: flex-start;\n }\n\n [this-week] {\n /* Was the x-large keyword, which is a browser step, not a step of this theme. */\n font-size: var(--md-sys-typescale-headline-small-size, 1.5rem);\n /*\n The month used to be wrapped in <b>. Formatting the whole title through Intl dropped\n that tag and left 24px at weight 400 — large, but with nothing to say it is the title.\n */\n font-weight: var(--md-sys-typescale-headline-small-weight, 640);\n /*\n The header must never be what makes the calendar scroll sideways. A flex item's floor is\n its content, so without this the title pushes the nav out and the grid follows — the same\n rule the day cells needed.\n */\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /*\n The three controls are one group: on a phone the week's title left them too little room and\n the group, a plain block, broke its buttons onto three lines. [확인함] 2026-11-05 · 375px\n */\n [nav] {\n margin-left: auto;\n display: flex;\n align-items: center;\n flex: none;\n }\n\n /* When title and controls do not fit on one line, the controls go under the title. */\n [head] {\n flex-wrap: wrap;\n }\n\n /*\n Room for what the buttons actually occupy.\n\n An md-icon-button paints a 48px touch target around its 32px box, so the rightmost control\n reaches 8px past its own edge. With that control flush to the header's right edge the\n header measured 8px wider than the grid under it, and the whole calendar grew a horizontal\n scrollbar. [확인함] 2026-09-11 — button right 898, its inner target 906, header client 860.\n\n The inset makes room instead of shrinking the target: a smaller target is a worse button,\n and the last control here is slotted by the host, whose size this component cannot know.\n */\n [head] {\n padding-right: var(--calendar-head-inset, 8px);\n }\n\n /*\n * Same token the monthly view uses for its slotted switch.\n *\n * This used to override --md-sys-color-primary inside the component with\n * rgba(var(--secondary-color-rgb), 0.8), which never produced a color:\n *\n * host does not define --secondary-color-rgb the token resolves to empty, so nothing\n * reading it gets a color at all\n * host defines it as \"12 34 56\" rgba(12 34 56, 0.8) mixes space-separated\n * channels into the comma syntax — invalid,\n * and the property falls back to black\n *\n * [확인함] 2026-09-07 · both cases measured in a browser\n */\n ::slotted(*) {\n color: var(--md-sys-color-secondary);\n }\n\n ol {\n flex: 1;\n\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n grid-template-rows: max-content;\n\n padding: 0;\n margin: var(--calendar-weekly-ol-margin, 9px 0);\n border-top: var(--calendar-weekly-ol-top-border, 3px solid var(--md-sys-color-outline, #999));\n /* Same as the month view — the grid is one box and closes its own corners. */\n border-radius: var(--calendar-weekly-radius, var(--ui-r-small, 6px));\n overflow: hidden;\n }\n\n /*\n * The seven tracks are 1fr, and 1fr's minimum is min-content — so a cell whose chip is\n * white-space: nowrap pushes its own track wide and squeezes the rest.\n *\n * Measured at 700px with one long title: li widths came out\n * [58, 58, 353, 58, 58, 58, 58] without min-width: 0\n * [100 × 7] with it\n *\n * The host page had already asked for text-overflow: ellipsis on that chip, and it never\n * ran: the track grew instead of the text being clipped. [확인함] 2026-09-07\n */\n li {\n position: relative;\n min-width: 0;\n\n list-style: none;\n border: var(--calendar-weekly-border, 1px solid var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.1)));\n border-width: var(--calendar-weekly-border-width, 0 1px 1px 0px);\n opacity: var(--calendar-weekly-opacity);\n\n user-select: none;\n touch-action: none;\n }\n\n li:nth-child(7n + 1) {\n border-left-width: 1px;\n }\n\n li[day-of-week] {\n opacity: 1;\n background-color: var(--calendar-current-week-background-color, var(--md-sys-color-surface));\n color: var(--calendar-current-week-color, var(--md-sys-color-on-surface));\n padding: var(--calendar-weekly-label-padding);\n text-align: center;\n }\n\n /*\n The cells that hold the events.\n\n They carried no surface at all. This view draws two rows of seven - the dates on top, the\n events under them - and only the date row was painted, by the rule above. The event row was\n transparent, so it showed whatever the host put behind the calendar, which on the plant page\n is the same colour as the date band. [확인함] 2026-09-11 — both measured rgb(240,242,244),\n and the outer box behind them the same again.\n\n So the week view never got the separation the month view has: there, the days you are\n reading are the brightest surface and the band above them is a step down. Same ladder here.\n\n A rule for li[current-week] used to sit in this place. Nothing has ever carried that\n attribute - the markup writes day-of-week on the date row and nothing on this one - so it\n painted nothing, while reading the token that the date band above actually uses.\n */\n li[date]:not([day-of-week]) {\n background-color: var(--calendar-weekly-date-background-color, var(--md-sys-color-surface-container-lowest));\n }\n\n /*\n What the host says is true of the day itself — the same channel and ordering rule as the\n month view, which carries the reasoning.\n\n Both of a day's cells take it here, the date band as well as the events under it, so a\n non-working day reads as a whole column rather than a tinted strip with an untouched body.\n */\n li[date][day-state] {\n background-color: var(--day-state-color);\n }\n\n li[date][selected] {\n background-color: var(--calendar-weekly-selected-background-color, var(--md-sys-color-tertiary-container));\n color: var(--calendar-weekly-selected-color, var(--md-sys-color-on-tertiary-container));\n }\n\n /*\n Today, on the day rather than only inside it — the same token and the same reasoning as the\n month view, which explains the gradient and the measured 10%.\n\n No ring here, though. A day in this view is a whole column, two cells tall, and an inset ring\n on each of them would draw a doubled rule across the middle where they meet. The column is\n also large enough that the tint alone is found immediately — the month view needs the ring\n because its cell is one of thirty-five.\n */\n li[today] {\n background-image: linear-gradient(\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent)),\n var(--calendar-today-wash, color-mix(in srgb, var(--md-sys-color-primary, #262e38) 10%, transparent))\n );\n }\n\n span[date-label] {\n display: block;\n margin: var(--calendar-weekly-date-label-margin);\n text-align: var(--calendar-weekly-label-align, center);\n /*\n A column header, not content. It stood at the body's size and ink, so the row of dates\n read as another row of data rather than as the heading of its column.\n */\n font-size: var(--md-sys-typescale-label-large-size, 0.8125rem);\n font-weight: 500;\n color: var(--md-sys-color-on-surface-variant);\n }\n\n /*\n The date, emphasised - not a filled pill.\n\n Two rules used to sit here, one setting a weight and the next overriding it with a lozenge.\n\n It was a solid lozenge in primary with reversed text. That made two maximum-contrast marks in\n one cell once the cell itself took the ring, and this theme's primary is near-black, so in\n light mode the lozenge read as an ink blot rather than an accent. It also made today's label\n 39px wide where every other day's is 114px, so the number's left edge moved on one day of the\n month - and in the week view it wrapped the weekday too, at 61px.\n\n Weight carries it, and only weight. Tinting it as well pointed the emphasis two ways: primary\n is a step away from the body ink, so a bolder today number came out measurably paler than\n every ordinary day beside it — dE00 7.2 dark, 5.7 light, against cell contrast 9.94 where its\n neighbours had 12.97. The ring is the accent-coloured thing; the number is a number.\n\n The colour token stays, defaulting to the ink the cell already gives, for a host whose accent\n is far enough from its body ink for a tint to add something.\n */\n li[today] > span[date-label] {\n font-weight: 700;\n color: var(--calendar-weekly-date-label-color, inherit);\n }\n\n li[date] {\n max-height: var(--calendar-weekly-date-max-height, none);\n /* The clip goes on the box that carries the ceiling — see the month view. */\n overflow: hidden;\n }\n\n [date] div {\n display: block;\n /* Was the small keyword. */\n font-size: var(--md-sys-typescale-body-small-size, 0.75rem);\n /*\n Events ran into the cell's own borders — measured 0px on the left and 1px on the right,\n while the date number above them sat 4px in. One cell, two left edges, and the titles\n touching the rules on both sides.\n\n The inset reads the date label's own margin, so the two lines stay together.\n */\n padding-inline: var(--calendar-weekly-date-label-margin, 4px);\n }\n\n [event] {\n display: block;\n background-color: var(--calendar-weekly-background-color);\n border: var(--calendar-weekly-event-border);\n border-width: var(--calendar-weekly-event-border-width);\n margin: var(--calendar-weekly-event-margin, 0 0 4px 0);\n padding: var(--calendar-weekly-event-padding, 2px 4px 2px 4px);\n\n user-select: all;\n touch-action: all;\n }\n`\n"]}
|
|
@@ -84,9 +84,9 @@ let CalendarWeekly = class CalendarWeekly extends LitElement {
|
|
|
84
84
|
>
|
|
85
85
|
<md-icon>chevron_right</md-icon>
|
|
86
86
|
</md-icon-button>
|
|
87
|
+
<!-- The host's view switch is one of the controls: it moves with them when the header wraps. -->
|
|
88
|
+
<slot></slot>
|
|
87
89
|
</div>
|
|
88
|
-
|
|
89
|
-
<slot></slot>
|
|
90
90
|
</div>
|
|
91
91
|
|
|
92
92
|
<ol
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-weekly.js","sourceRoot":"","sources":["../../src/calendar-weekly.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/text-button.js'\nimport '@material/web/iconbutton/icon-button.js'\nimport '@material/web/icon/icon.js'\n\nimport dayjs, { Dayjs } from 'dayjs/esm/index.js'\nimport { html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { TooltipReactiveController } from '@operato/utils'\n\nimport { CalendarWeeklyStyles } from './calendar-weekly-styles.js'\nimport { reportDayOverflow } from './day-overflow.js'\nimport {\n BizEvent,\n CALENDAR,\n DayState,\n EventProvider,\n isToday,\n dayLabel,\n monthTitle,\n nextWeekLabel,\n previousWeekLabel,\n todayLabel,\n weekdayNames\n} from './types.js'\n\n@customElement('calendar-weekly')\nexport class CalendarWeekly extends LitElement {\n static styles = [CalendarWeeklyStyles]\n\n @property({ type: Object }) eventProvider?: EventProvider\n\n @state() year: number = dayjs().year()\n @state() month: number = dayjs().month()\n @state() week: number = dayjs().week()\n @state() calendar?: CALENDAR\n @state() eventMap?: Map<Date, BizEvent[]>\n /** What is true of the days themselves, if the host answers for them. See {@link DayState}. */\n @state() dayStateMap?: Map<Date, DayState>\n @state() selections?: [Date, Date]\n\n @state() pointerDownDate?: Date | null\n\n /** Last reported overflow, so the host is not told the same thing after every render. */\n private lastOverflow = ''\n\n /*\n * Event titles are drawn on one nowrap line and cut with an ellipsis, so the full name only\n * exists in a tooltip. Hosts were reaching for the browser's own `title`, which waits about a\n * second and cannot be styled — measured on the plant calendar.\n *\n * data-grist already runs this controller on its header and its cells. It waits 450ms so a\n * pointer crossing the grid does not trail tooltips behind it, then drops the wait once one\n * is up, and it only fires on elements that actually overflow — which is exactly the set of\n * titles worth expanding.\n *\n * Hosts mark the rows they want expanded with data-reactive-tooltip. The listener sits on\n * this shadow root, where the host's own event templates are rendered.\n */\n private tooltip = new TooltipReactiveController(this, {\n /*\n * Read the attribute's value, not the row's text.\n *\n * The controller treats the attribute as a marker and otherwise repeats what is already on\n * screen, which for a cut title is at least the whole title. But a host writes the line it\n * wants read - the plant calendar puts the kind, the order and where it runs in there - and\n * without this that sentence was thrown away. [확인함] 2026-09-11\n */\n content: element => element.getAttribute('data-reactive-tooltip') || element.textContent?.trim() || ''\n })\n\n render() {\n return html`\n <div head>\n <div this-week>\n <!--\n W37 is the ISO 8601 week designator. The word \"Week\" was English on every screen,\n and Intl has no name for a week number, so the marker carries it instead of a word.\n -->\n ${monthTitle(this.year, this.month)} · W${this.week}\n </div>\n\n <div nav>\n <md-icon-button\n aria-label=${previousWeekLabel()}\n title=${previousWeekLabel()}\n @click=${() => {\n const dayJs = this.getLastDateOfWeek(this.year, this.week)\n const prevWeek = dayJs.subtract(1, 'week')\n this.moveTo(prevWeek.year(), prevWeek.month(), prevWeek.week())\n }}\n >\n <md-icon>chevron_left</md-icon>\n </md-icon-button>\n <md-text-button\n @click=${() => {\n this.moveTo(dayjs().year(), dayjs().month(), dayjs().week())\n }}\n >${todayLabel()}</md-text-button\n >\n <md-icon-button\n aria-label=${nextWeekLabel()}\n title=${nextWeekLabel()}\n @click=${() => {\n const dayJs = this.getLastDateOfWeek(this.year, this.week)\n const nextWeek = dayJs.add(1, 'week')\n this.moveTo(nextWeek.year(), nextWeek.month(), nextWeek.week())\n }}\n >\n <md-icon>chevron_right</md-icon>\n </md-icon-button>\n </div>\n\n <slot></slot>\n </div>\n\n <ol\n @pointerdown=${this.handlePointerDown}\n @pointermove=${this.handlePointerMove}\n @pointerup=${this.handlePointerUp}\n >\n ${this.calendar?.map((date, index) => {\n const [from, to] = this.selections || ([] as any)\n const { date: thisDate } = date\n const selected = from && to && thisDate >= from && thisDate <= to\n\n return html`\n <li\n ?today=${date.today}\n day-of-week\n date\n day-state=${ifDefined(this.dayStateMap?.get(thisDate)?.name)}\n style=${ifDefined(\n this.dayStateMap?.get(thisDate) &&\n `--day-state-color:${this.dayStateMap.get(thisDate)!.color}`\n )}\n .date=${thisDate}\n ?selected=${selected}\n >\n <span date-label>${dayLabel(date.date, !!date.withMonth)} (${weekdayNames()[index]})</span>\n </li>\n `\n })}\n ${this.calendar?.map(date => {\n const [from, to] = this.selections || ([] as any)\n const { date: thisDate } = date\n const selected = from && to && thisDate >= from && thisDate <= to\n\n /*\n * The event cell carries today as well as the date cell above it.\n *\n * This view draws a day as two cells in one column - the date on top, its events\n * under it - and only the top one was marked. Today's tint therefore stopped at the\n * date band, which is the part you are least likely to be looking at.\n */\n const dayState = this.dayStateMap?.get(thisDate)\n\n return html`<li\n date\n ?today=${date.today}\n day-state=${ifDefined(dayState?.name)}\n style=${ifDefined(dayState && `--day-state-color:${dayState.color}`)}\n .date=${thisDate}\n ?selected=${selected}\n >\n <div>\n ${(this.eventMap?.get(date?.date) || []).map(({ title, color, template }) =>\n template ? template : html`<span event style=\"border-color: ${color};\">${title}</span>`\n )}\n </div>\n </li>`\n })}\n </ol>\n `\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('year') || changes.has('month') || changes.has('week') || changes.has('eventProvider')) {\n const calendar = this.createDaysForCurrentWeek(this.year, this.week)\n\n /* Both questions go out together — see the month view for why. */\n const [eventMap, dayStateMap] = await Promise.all([\n this.eventProvider?.fetchEventsForCalendar(calendar),\n this.eventProvider?.fetchDayStatesForCalendar?.(calendar)\n ])\n\n this.eventMap = eventMap\n this.dayStateMap = dayStateMap\n this.calendar = calendar\n }\n\n /*\n * After the rows are laid out, not before. A cap only bites once the browser has placed the\n * children, so this has to run on every render - the grid also reflows when the host swaps\n * its templates or the window changes width.\n */\n this.lastOverflow = reportDayOverflow(this, this.shadowRoot, this.lastOverflow)\n }\n\n moveTo(year: number, month: number, week: number) {\n this.year = year\n this.month = month\n this.week = week\n }\n\n handlePointerDown(event: PointerEvent) {\n const target = event.target as HTMLElement\n\n if (!target.hasAttribute('date') && !target.hasAttribute('date-label')) {\n return\n }\n\n const dateElement = target.closest('[date]') as HTMLElement\n const from = (dateElement as any).date\n\n this.pointerDownDate = from\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerMove(event: PointerEvent) {\n const from = this.pointerDownDate\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerUp(event: PointerEvent) {\n const from = this.pointerDownDate\n\n this.pointerDownDate = null\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n this.dispatchEvent(\n new CustomEvent('select-date', {\n detail: this.selections,\n bubbles: true,\n composed: true\n })\n )\n\n event.preventDefault()\n }\n\n selectDate(date: { label: string; date: Date; thisMonth?: boolean; thisWeek?: boolean; today?: boolean }) {\n if (date) {\n this.selections = [date.date, date.date]\n } else {\n this.selections = undefined\n }\n\n this.dispatchEvent(\n new CustomEvent('select-date', {\n detail: date,\n bubbles: true,\n composed: true\n })\n )\n }\n\n getLastDateOfWeek(year: number, week: number): Dayjs {\n const firstWeekLastDay = dayjs(new Date(year, 0, 1)).endOf('w')\n week -= 1 // one-based week, so need the minus-one\n return firstWeekLastDay.add(week, 'w')\n }\n\n createDaysForCurrentWeek(year: number, week: number): CALENDAR {\n const lastDayjs = this.getLastDateOfWeek(year, week)\n const weekDays = 7\n\n return [...Array(weekDays)]\n .map((day, index) => {\n const date = new Date(lastDayjs.year(), lastDayjs.month(), lastDayjs.date() - index)\n const label = dayLabel(date, true)\n return {\n date,\n label,\n thisWeek: true,\n today: isToday(date)\n }\n })\n .reverse()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"calendar-weekly.js","sourceRoot":"","sources":["../../src/calendar-weekly.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/text-button.js'\nimport '@material/web/iconbutton/icon-button.js'\nimport '@material/web/icon/icon.js'\n\nimport dayjs, { Dayjs } from 'dayjs/esm/index.js'\nimport { html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { TooltipReactiveController } from '@operato/utils'\n\nimport { CalendarWeeklyStyles } from './calendar-weekly-styles.js'\nimport { reportDayOverflow } from './day-overflow.js'\nimport {\n BizEvent,\n CALENDAR,\n DayState,\n EventProvider,\n isToday,\n dayLabel,\n monthTitle,\n nextWeekLabel,\n previousWeekLabel,\n todayLabel,\n weekdayNames\n} from './types.js'\n\n@customElement('calendar-weekly')\nexport class CalendarWeekly extends LitElement {\n static styles = [CalendarWeeklyStyles]\n\n @property({ type: Object }) eventProvider?: EventProvider\n\n @state() year: number = dayjs().year()\n @state() month: number = dayjs().month()\n @state() week: number = dayjs().week()\n @state() calendar?: CALENDAR\n @state() eventMap?: Map<Date, BizEvent[]>\n /** What is true of the days themselves, if the host answers for them. See {@link DayState}. */\n @state() dayStateMap?: Map<Date, DayState>\n @state() selections?: [Date, Date]\n\n @state() pointerDownDate?: Date | null\n\n /** Last reported overflow, so the host is not told the same thing after every render. */\n private lastOverflow = ''\n\n /*\n * Event titles are drawn on one nowrap line and cut with an ellipsis, so the full name only\n * exists in a tooltip. Hosts were reaching for the browser's own `title`, which waits about a\n * second and cannot be styled — measured on the plant calendar.\n *\n * data-grist already runs this controller on its header and its cells. It waits 450ms so a\n * pointer crossing the grid does not trail tooltips behind it, then drops the wait once one\n * is up, and it only fires on elements that actually overflow — which is exactly the set of\n * titles worth expanding.\n *\n * Hosts mark the rows they want expanded with data-reactive-tooltip. The listener sits on\n * this shadow root, where the host's own event templates are rendered.\n */\n private tooltip = new TooltipReactiveController(this, {\n /*\n * Read the attribute's value, not the row's text.\n *\n * The controller treats the attribute as a marker and otherwise repeats what is already on\n * screen, which for a cut title is at least the whole title. But a host writes the line it\n * wants read - the plant calendar puts the kind, the order and where it runs in there - and\n * without this that sentence was thrown away. [확인함] 2026-09-11\n */\n content: element => element.getAttribute('data-reactive-tooltip') || element.textContent?.trim() || ''\n })\n\n render() {\n return html`\n <div head>\n <div this-week>\n <!--\n W37 is the ISO 8601 week designator. The word \"Week\" was English on every screen,\n and Intl has no name for a week number, so the marker carries it instead of a word.\n -->\n ${monthTitle(this.year, this.month)} · W${this.week}\n </div>\n\n <div nav>\n <md-icon-button\n aria-label=${previousWeekLabel()}\n title=${previousWeekLabel()}\n @click=${() => {\n const dayJs = this.getLastDateOfWeek(this.year, this.week)\n const prevWeek = dayJs.subtract(1, 'week')\n this.moveTo(prevWeek.year(), prevWeek.month(), prevWeek.week())\n }}\n >\n <md-icon>chevron_left</md-icon>\n </md-icon-button>\n <md-text-button\n @click=${() => {\n this.moveTo(dayjs().year(), dayjs().month(), dayjs().week())\n }}\n >${todayLabel()}</md-text-button\n >\n <md-icon-button\n aria-label=${nextWeekLabel()}\n title=${nextWeekLabel()}\n @click=${() => {\n const dayJs = this.getLastDateOfWeek(this.year, this.week)\n const nextWeek = dayJs.add(1, 'week')\n this.moveTo(nextWeek.year(), nextWeek.month(), nextWeek.week())\n }}\n >\n <md-icon>chevron_right</md-icon>\n </md-icon-button>\n <!-- The host's view switch is one of the controls: it moves with them when the header wraps. -->\n <slot></slot>\n </div>\n </div>\n\n <ol\n @pointerdown=${this.handlePointerDown}\n @pointermove=${this.handlePointerMove}\n @pointerup=${this.handlePointerUp}\n >\n ${this.calendar?.map((date, index) => {\n const [from, to] = this.selections || ([] as any)\n const { date: thisDate } = date\n const selected = from && to && thisDate >= from && thisDate <= to\n\n return html`\n <li\n ?today=${date.today}\n day-of-week\n date\n day-state=${ifDefined(this.dayStateMap?.get(thisDate)?.name)}\n style=${ifDefined(\n this.dayStateMap?.get(thisDate) &&\n `--day-state-color:${this.dayStateMap.get(thisDate)!.color}`\n )}\n .date=${thisDate}\n ?selected=${selected}\n >\n <span date-label>${dayLabel(date.date, !!date.withMonth)} (${weekdayNames()[index]})</span>\n </li>\n `\n })}\n ${this.calendar?.map(date => {\n const [from, to] = this.selections || ([] as any)\n const { date: thisDate } = date\n const selected = from && to && thisDate >= from && thisDate <= to\n\n /*\n * The event cell carries today as well as the date cell above it.\n *\n * This view draws a day as two cells in one column - the date on top, its events\n * under it - and only the top one was marked. Today's tint therefore stopped at the\n * date band, which is the part you are least likely to be looking at.\n */\n const dayState = this.dayStateMap?.get(thisDate)\n\n return html`<li\n date\n ?today=${date.today}\n day-state=${ifDefined(dayState?.name)}\n style=${ifDefined(dayState && `--day-state-color:${dayState.color}`)}\n .date=${thisDate}\n ?selected=${selected}\n >\n <div>\n ${(this.eventMap?.get(date?.date) || []).map(({ title, color, template }) =>\n template ? template : html`<span event style=\"border-color: ${color};\">${title}</span>`\n )}\n </div>\n </li>`\n })}\n </ol>\n `\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('year') || changes.has('month') || changes.has('week') || changes.has('eventProvider')) {\n const calendar = this.createDaysForCurrentWeek(this.year, this.week)\n\n /* Both questions go out together — see the month view for why. */\n const [eventMap, dayStateMap] = await Promise.all([\n this.eventProvider?.fetchEventsForCalendar(calendar),\n this.eventProvider?.fetchDayStatesForCalendar?.(calendar)\n ])\n\n this.eventMap = eventMap\n this.dayStateMap = dayStateMap\n this.calendar = calendar\n }\n\n /*\n * After the rows are laid out, not before. A cap only bites once the browser has placed the\n * children, so this has to run on every render - the grid also reflows when the host swaps\n * its templates or the window changes width.\n */\n this.lastOverflow = reportDayOverflow(this, this.shadowRoot, this.lastOverflow)\n }\n\n moveTo(year: number, month: number, week: number) {\n this.year = year\n this.month = month\n this.week = week\n }\n\n handlePointerDown(event: PointerEvent) {\n const target = event.target as HTMLElement\n\n if (!target.hasAttribute('date') && !target.hasAttribute('date-label')) {\n return\n }\n\n const dateElement = target.closest('[date]') as HTMLElement\n const from = (dateElement as any).date\n\n this.pointerDownDate = from\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerMove(event: PointerEvent) {\n const from = this.pointerDownDate\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n // 캡처를 설정하지 않음(Touch 디바이스에서 중요)\n target.releasePointerCapture(event.pointerId)\n\n event.preventDefault()\n }\n\n handlePointerUp(event: PointerEvent) {\n const from = this.pointerDownDate\n\n this.pointerDownDate = null\n\n if (!from) {\n return\n }\n\n const target = event.target as HTMLElement\n const dateElement = target.closest('[date]') as HTMLElement\n\n if (!dateElement) {\n return\n }\n\n const date = (dateElement as any).date\n this.selections = from > date ? [date, from] : [from, date]\n\n this.dispatchEvent(\n new CustomEvent('select-date', {\n detail: this.selections,\n bubbles: true,\n composed: true\n })\n )\n\n event.preventDefault()\n }\n\n selectDate(date: { label: string; date: Date; thisMonth?: boolean; thisWeek?: boolean; today?: boolean }) {\n if (date) {\n this.selections = [date.date, date.date]\n } else {\n this.selections = undefined\n }\n\n this.dispatchEvent(\n new CustomEvent('select-date', {\n detail: date,\n bubbles: true,\n composed: true\n })\n )\n }\n\n getLastDateOfWeek(year: number, week: number): Dayjs {\n const firstWeekLastDay = dayjs(new Date(year, 0, 1)).endOf('w')\n week -= 1 // one-based week, so need the minus-one\n return firstWeekLastDay.add(week, 'w')\n }\n\n createDaysForCurrentWeek(year: number, week: number): CALENDAR {\n const lastDayjs = this.getLastDateOfWeek(year, week)\n const weekDays = 7\n\n return [...Array(weekDays)]\n .map((day, index) => {\n const date = new Date(lastDayjs.year(), lastDayjs.month(), lastDayjs.date() - index)\n const label = dayLabel(date, true)\n return {\n date,\n label,\n thisWeek: true,\n today: isToday(date)\n }\n })\n .reverse()\n }\n}\n"]}
|
|
@@ -185,4 +185,27 @@ describe('the view switch is a named button', () => {
|
|
|
185
185
|
expect(button.getAttribute('aria-label')).to.equal('주간 보기');
|
|
186
186
|
});
|
|
187
187
|
});
|
|
188
|
+
/*
|
|
189
|
+
* A phone. The week's title is longer than the month's, and at 343px it left the controls too little room: the
|
|
190
|
+
* group of previous · today · next, a plain block, broke onto three lines. [확인함] 2026-11-05 · 375px viewport
|
|
191
|
+
*/
|
|
192
|
+
describe('the header on a phone', () => {
|
|
193
|
+
for (const mode of ['monthly', 'weekly']) {
|
|
194
|
+
it(`${mode}: previous, today, next and the view switch stay on one line`, async () => {
|
|
195
|
+
const el = (await fixture(html `<div style="width: 343px">
|
|
196
|
+
<ox-event-view mode=${mode} .eventProvider=${providerWithLongTitleOn(-1)}></ox-event-view>
|
|
197
|
+
</div>`));
|
|
198
|
+
const inner = await settle(el.querySelector('ox-event-view'));
|
|
199
|
+
const nav = inner.renderRoot.querySelector('[nav]');
|
|
200
|
+
/* previous · today · next, and the host's view switch through the slot */
|
|
201
|
+
const slot = nav.querySelector('slot');
|
|
202
|
+
const controls = [...Array.from(nav.children).filter(one => one !== slot), ...slot.assignedElements()];
|
|
203
|
+
const tops = controls.map(one => Math.round(one.getBoundingClientRect().top + one.getBoundingClientRect().height / 2));
|
|
204
|
+
expect(tops.length).to.equal(4);
|
|
205
|
+
expect(new Set(tops).size, `the controls stand on ${new Set(tops).size} lines`).to.equal(1);
|
|
206
|
+
const head = inner.renderRoot.querySelector('[head]');
|
|
207
|
+
expect(head.scrollWidth <= head.clientWidth, 'the header is wider than the calendar').to.equal(true);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
});
|
|
188
211
|
//# sourceMappingURL=calendar-layout.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-layout.test.js","sourceRoot":"","sources":["../../test/calendar-layout.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, oneEvent } from '@open-wc/testing'\n\nimport '../src/ox-event-view.js'\nimport { OxEventView } from '../src/ox-event-view.js'\nimport { EventProvider, CALENDAR, BizEvent } from '../src/types.js'\n\n/**\n * Two things this calendar got wrong on a real screen, both of them structural.\n *\n * The package had no tests at all, which is why a layout that squeezed six of seven days to\n * 58px and a view switch that told nobody both shipped.\n */\n\n/** One long unbreakable title on one day, the way a work order id looks. */\nconst LONG = 'WO-CT-MAIN-003 · CT-FRAME-SET-ASSEMBLY-STATION'\n\nfunction providerWithLongTitleOn(index: number): EventProvider {\n return {\n fetchEventsForCalendar: async (calendar: CALENDAR) => {\n const days = (calendar ?? []).filter(one => one?.date instanceof Date)\n const map = new Map<Date, BizEvent[]>()\n\n days.forEach((day, i) => {\n map.set(day.date, [\n {\n title: i === index ? LONG : 'short',\n color: 'currentColor',\n /*\n * nowrap is what a host page asks for when it wants one line per row and an\n * ellipsis. It also makes the chip's min-content width the whole title, which is\n * the pressure this test is about.\n */\n template: html`<div style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">\n ${i === index ? LONG : 'short'}\n </div>`\n }\n ])\n })\n\n return map\n }\n }\n}\n\nasync function settle(el: OxEventView) {\n await el.updateComplete\n const inner = el.renderRoot.querySelector('calendar-monthly, calendar-weekly') as any\n await inner?.updateComplete\n /* the provider is awaited inside updated(), so give it a turn and let layout settle */\n await new Promise(resolve => setTimeout(resolve, 0))\n await inner?.updateComplete\n return inner\n}\n\ndescribe('the seven day columns stay the same width', () => {\n for (const mode of ['monthly', 'weekly'] as const) {\n it(`${mode}: one long title does not take the room of the other six days`, async () => {\n const el = (await fixture(\n html`<div style=\"width: 700px\">\n <ox-event-view mode=${mode} .eventProvider=${providerWithLongTitleOn(2)}></ox-event-view>\n </div>`\n )) as HTMLElement\n\n const view = el.querySelector('ox-event-view') as OxEventView\n const inner = await settle(view)\n\n const cells = [...inner.renderRoot.querySelectorAll('li[date]')] as HTMLElement[]\n expect(cells.length, 'no date cells were drawn, so this test measures nothing').to.be.greaterThan(6)\n\n const widths = cells.slice(0, 7).map(one => Math.round(one.getBoundingClientRect().width))\n const widest = Math.max(...widths)\n const narrowest = Math.min(...widths)\n\n /*\n * Measured before min-width: 0 was added — [58, 58, 353, 58, 58, 58, 58] at this width.\n * A pixel of rounding is fine; a column taking six times its share is not.\n */\n expect(widest - narrowest, `columns came out ${widths.join(', ')}`).to.be.lessThan(2)\n })\n }\n})\n\ndescribe('the built-in view switch tells the host', () => {\n it('emits mode-change, because the host keeps its own state next to this one', async () => {\n const el = (await fixture(html`<ox-event-view mode=\"monthly\"></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n\n const toggle = inner.querySelector('md-icon') as HTMLElement\n expect(toggle, 'the switch is slotted content — without it nothing can be clicked').to.exist\n\n const heard = oneEvent(el, 'mode-change')\n toggle.click()\n const event = await heard\n\n expect(event.detail.mode).to.equal('weekly')\n expect(el.mode, 'the element still switches on its own, for hosts that ignore the event').to.equal('weekly')\n })\n\n it('reports monthly on the way back', async () => {\n const el = (await fixture(html`<ox-event-view mode=\"weekly\"></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n\n const heard = oneEvent(el, 'mode-change')\n ;(inner.querySelector('md-icon') as HTMLElement).click()\n\n expect((await heard).detail.mode).to.equal('monthly')\n })\n})\n\n/**\n * The calendar drew \"Sun Mon Tue\" over \"September 2026\" on a screen whose every other word was\n * Korean: the weekday row was a literal English array and dayjs had no locale loaded.\n *\n * These read the rendered text rather than the helpers, because a helper that returns Korean\n * proves nothing if the template still holds the old array.\n */\ndescribe('the calendar speaks the language the document declares', () => {\n const original = document.documentElement.lang\n\n afterEach(() => {\n document.documentElement.lang = original\n })\n\n async function headerOf(lang: string, mode: 'monthly' | 'weekly') {\n document.documentElement.lang = lang\n const el = (await fixture(html`<ox-event-view mode=${mode}></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n return inner.renderRoot as ShadowRoot\n }\n\n for (const mode of ['monthly', 'weekly'] as const) {\n it(`${mode}: the weekday row is in Korean when the document says ko`, async () => {\n const root = await headerOf('ko', mode)\n const names = Array.from(root.querySelectorAll('li[day-of-week], [date-label]')).map(el =>\n el.textContent!.trim()\n )\n const row = names.join(' ')\n\n expect(row, `weekday row came out \"${row}\"`).to.not.match(/Sun|Mon|Tue|Wed|Thu|Fri|Sat/)\n expect(row, `weekday row came out \"${row}\"`).to.match(/[일월화수목금토]/)\n })\n\n it(`${mode}: the step buttons carry a name, not a \"<\" glyph`, async () => {\n const root = await headerOf('ko', mode)\n const buttons = Array.from(root.querySelectorAll('md-icon-button'))\n\n expect(buttons.length, 'previous and next should both be icon buttons').to.equal(2)\n for (const button of buttons) {\n const name = button.getAttribute('aria-label') ?? ''\n expect(name, 'an icon button with no accessible name is read as its glyph').to.not.equal('')\n expect(name).to.not.match(/^[<>]$/)\n }\n })\n }\n\n it('monthly: the month title follows the language', async () => {\n const root = await headerOf('ko', 'monthly')\n const title = root.querySelector('[this-month]')!.textContent!.trim()\n\n expect(title, `title came out \"${title}\"`).to.not.match(/January|February|March|September|December/)\n expect(title, `title came out \"${title}\"`).to.include('월')\n })\n\n it('monthly: today is named in the language, not the word \"Today\"', async () => {\n const root = await headerOf('ko', 'monthly')\n const labels = Array.from(root.querySelectorAll('md-text-button')).map(el => el.textContent!.trim())\n\n expect(labels.join(' '), `buttons came out \"${labels.join(' ')}\"`).to.not.include('Today')\n expect(labels.some(l => l.includes('오늘')), `buttons came out \"${labels.join(' ')}\"`).to.be.true\n })\n})\n\n/**\n * The day numbers were formatted once, when the grid was built, and the grid is rebuilt on a\n * month change - not on a language change. So switching language left \"Sep 6 (일)\": the\n * weekday came from the template and followed, the date came from the stored string and did\n * not. Found on the running plant, with the weekday already in Korean beside it.\n */\ndescribe('the dates follow a language change, not just the weekday', () => {\n const original = document.documentElement.lang\n\n afterEach(() => {\n document.documentElement.lang = original\n })\n\n for (const mode of ['monthly', 'weekly'] as const) {\n it(`${mode}: switching to ko rewrites the day labels, not only the weekday row`, async () => {\n document.documentElement.lang = 'en'\n const el = (await fixture(html`<ox-event-view mode=${mode}></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n\n document.documentElement.lang = 'ko'\n inner.requestUpdate()\n await inner.updateComplete\n\n const labels = Array.from((inner.renderRoot as ShadowRoot).querySelectorAll('[date-label]'))\n .map(el => el.textContent!.trim())\n .join(' ')\n\n expect(labels, `day labels came out \"${labels}\"`).to.not.match(\n /Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec/\n )\n expect(labels, `day labels came out \"${labels}\"`).to.include('월')\n })\n }\n})\n\n/**\n * The view switch was a bare md-icon: 24px, no padding, no hit area and no accessible name,\n * sitting flush against a 40px button. On screen it read as four vertical bars.\n */\ndescribe('the view switch is a named button', () => {\n for (const [mode, other] of [\n ['monthly', 'week'],\n ['weekly', 'month']\n ] as const) {\n it(`${mode}: the switch is an icon button that says where it goes`, async () => {\n const el = (await fixture(html`<ox-event-view mode=${mode}></ox-event-view>`)) as OxEventView\n await settle(el)\n\n const button = (el.renderRoot as ShadowRoot).querySelector('md-icon-button')\n expect(button, 'the switch should be a button, not a bare icon').to.exist\n\n const name = button!.getAttribute('aria-label') ?? ''\n expect(name, 'an icon with no name is read as its glyph').to.include(other)\n })\n }\n\n it('a host can pass its own words', async () => {\n const el = (await fixture(\n html`<ox-event-view mode=\"monthly\" weekly-label=\"주간 보기\"></ox-event-view>`\n )) as OxEventView\n await settle(el)\n\n const button = (el.renderRoot as ShadowRoot).querySelector('md-icon-button')\n expect(button!.getAttribute('aria-label')).to.equal('주간 보기')\n })\n})\n"]}
|
|
1
|
+
{"version":3,"file":"calendar-layout.test.js","sourceRoot":"","sources":["../../test/calendar-layout.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, oneEvent } from '@open-wc/testing'\n\nimport '../src/ox-event-view.js'\nimport { OxEventView } from '../src/ox-event-view.js'\nimport { EventProvider, CALENDAR, BizEvent } from '../src/types.js'\n\n/**\n * Two things this calendar got wrong on a real screen, both of them structural.\n *\n * The package had no tests at all, which is why a layout that squeezed six of seven days to\n * 58px and a view switch that told nobody both shipped.\n */\n\n/** One long unbreakable title on one day, the way a work order id looks. */\nconst LONG = 'WO-CT-MAIN-003 · CT-FRAME-SET-ASSEMBLY-STATION'\n\nfunction providerWithLongTitleOn(index: number): EventProvider {\n return {\n fetchEventsForCalendar: async (calendar: CALENDAR) => {\n const days = (calendar ?? []).filter(one => one?.date instanceof Date)\n const map = new Map<Date, BizEvent[]>()\n\n days.forEach((day, i) => {\n map.set(day.date, [\n {\n title: i === index ? LONG : 'short',\n color: 'currentColor',\n /*\n * nowrap is what a host page asks for when it wants one line per row and an\n * ellipsis. It also makes the chip's min-content width the whole title, which is\n * the pressure this test is about.\n */\n template: html`<div style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">\n ${i === index ? LONG : 'short'}\n </div>`\n }\n ])\n })\n\n return map\n }\n }\n}\n\nasync function settle(el: OxEventView) {\n await el.updateComplete\n const inner = el.renderRoot.querySelector('calendar-monthly, calendar-weekly') as any\n await inner?.updateComplete\n /* the provider is awaited inside updated(), so give it a turn and let layout settle */\n await new Promise(resolve => setTimeout(resolve, 0))\n await inner?.updateComplete\n return inner\n}\n\ndescribe('the seven day columns stay the same width', () => {\n for (const mode of ['monthly', 'weekly'] as const) {\n it(`${mode}: one long title does not take the room of the other six days`, async () => {\n const el = (await fixture(\n html`<div style=\"width: 700px\">\n <ox-event-view mode=${mode} .eventProvider=${providerWithLongTitleOn(2)}></ox-event-view>\n </div>`\n )) as HTMLElement\n\n const view = el.querySelector('ox-event-view') as OxEventView\n const inner = await settle(view)\n\n const cells = [...inner.renderRoot.querySelectorAll('li[date]')] as HTMLElement[]\n expect(cells.length, 'no date cells were drawn, so this test measures nothing').to.be.greaterThan(6)\n\n const widths = cells.slice(0, 7).map(one => Math.round(one.getBoundingClientRect().width))\n const widest = Math.max(...widths)\n const narrowest = Math.min(...widths)\n\n /*\n * Measured before min-width: 0 was added — [58, 58, 353, 58, 58, 58, 58] at this width.\n * A pixel of rounding is fine; a column taking six times its share is not.\n */\n expect(widest - narrowest, `columns came out ${widths.join(', ')}`).to.be.lessThan(2)\n })\n }\n})\n\ndescribe('the built-in view switch tells the host', () => {\n it('emits mode-change, because the host keeps its own state next to this one', async () => {\n const el = (await fixture(html`<ox-event-view mode=\"monthly\"></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n\n const toggle = inner.querySelector('md-icon') as HTMLElement\n expect(toggle, 'the switch is slotted content — without it nothing can be clicked').to.exist\n\n const heard = oneEvent(el, 'mode-change')\n toggle.click()\n const event = await heard\n\n expect(event.detail.mode).to.equal('weekly')\n expect(el.mode, 'the element still switches on its own, for hosts that ignore the event').to.equal('weekly')\n })\n\n it('reports monthly on the way back', async () => {\n const el = (await fixture(html`<ox-event-view mode=\"weekly\"></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n\n const heard = oneEvent(el, 'mode-change')\n ;(inner.querySelector('md-icon') as HTMLElement).click()\n\n expect((await heard).detail.mode).to.equal('monthly')\n })\n})\n\n/**\n * The calendar drew \"Sun Mon Tue\" over \"September 2026\" on a screen whose every other word was\n * Korean: the weekday row was a literal English array and dayjs had no locale loaded.\n *\n * These read the rendered text rather than the helpers, because a helper that returns Korean\n * proves nothing if the template still holds the old array.\n */\ndescribe('the calendar speaks the language the document declares', () => {\n const original = document.documentElement.lang\n\n afterEach(() => {\n document.documentElement.lang = original\n })\n\n async function headerOf(lang: string, mode: 'monthly' | 'weekly') {\n document.documentElement.lang = lang\n const el = (await fixture(html`<ox-event-view mode=${mode}></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n return inner.renderRoot as ShadowRoot\n }\n\n for (const mode of ['monthly', 'weekly'] as const) {\n it(`${mode}: the weekday row is in Korean when the document says ko`, async () => {\n const root = await headerOf('ko', mode)\n const names = Array.from(root.querySelectorAll('li[day-of-week], [date-label]')).map(el =>\n el.textContent!.trim()\n )\n const row = names.join(' ')\n\n expect(row, `weekday row came out \"${row}\"`).to.not.match(/Sun|Mon|Tue|Wed|Thu|Fri|Sat/)\n expect(row, `weekday row came out \"${row}\"`).to.match(/[일월화수목금토]/)\n })\n\n it(`${mode}: the step buttons carry a name, not a \"<\" glyph`, async () => {\n const root = await headerOf('ko', mode)\n const buttons = Array.from(root.querySelectorAll('md-icon-button'))\n\n expect(buttons.length, 'previous and next should both be icon buttons').to.equal(2)\n for (const button of buttons) {\n const name = button.getAttribute('aria-label') ?? ''\n expect(name, 'an icon button with no accessible name is read as its glyph').to.not.equal('')\n expect(name).to.not.match(/^[<>]$/)\n }\n })\n }\n\n it('monthly: the month title follows the language', async () => {\n const root = await headerOf('ko', 'monthly')\n const title = root.querySelector('[this-month]')!.textContent!.trim()\n\n expect(title, `title came out \"${title}\"`).to.not.match(/January|February|March|September|December/)\n expect(title, `title came out \"${title}\"`).to.include('월')\n })\n\n it('monthly: today is named in the language, not the word \"Today\"', async () => {\n const root = await headerOf('ko', 'monthly')\n const labels = Array.from(root.querySelectorAll('md-text-button')).map(el => el.textContent!.trim())\n\n expect(labels.join(' '), `buttons came out \"${labels.join(' ')}\"`).to.not.include('Today')\n expect(labels.some(l => l.includes('오늘')), `buttons came out \"${labels.join(' ')}\"`).to.be.true\n })\n})\n\n/**\n * The day numbers were formatted once, when the grid was built, and the grid is rebuilt on a\n * month change - not on a language change. So switching language left \"Sep 6 (일)\": the\n * weekday came from the template and followed, the date came from the stored string and did\n * not. Found on the running plant, with the weekday already in Korean beside it.\n */\ndescribe('the dates follow a language change, not just the weekday', () => {\n const original = document.documentElement.lang\n\n afterEach(() => {\n document.documentElement.lang = original\n })\n\n for (const mode of ['monthly', 'weekly'] as const) {\n it(`${mode}: switching to ko rewrites the day labels, not only the weekday row`, async () => {\n document.documentElement.lang = 'en'\n const el = (await fixture(html`<ox-event-view mode=${mode}></ox-event-view>`)) as OxEventView\n const inner = await settle(el)\n\n document.documentElement.lang = 'ko'\n inner.requestUpdate()\n await inner.updateComplete\n\n const labels = Array.from((inner.renderRoot as ShadowRoot).querySelectorAll('[date-label]'))\n .map(el => el.textContent!.trim())\n .join(' ')\n\n expect(labels, `day labels came out \"${labels}\"`).to.not.match(\n /Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec/\n )\n expect(labels, `day labels came out \"${labels}\"`).to.include('월')\n })\n }\n})\n\n/**\n * The view switch was a bare md-icon: 24px, no padding, no hit area and no accessible name,\n * sitting flush against a 40px button. On screen it read as four vertical bars.\n */\ndescribe('the view switch is a named button', () => {\n for (const [mode, other] of [\n ['monthly', 'week'],\n ['weekly', 'month']\n ] as const) {\n it(`${mode}: the switch is an icon button that says where it goes`, async () => {\n const el = (await fixture(html`<ox-event-view mode=${mode}></ox-event-view>`)) as OxEventView\n await settle(el)\n\n const button = (el.renderRoot as ShadowRoot).querySelector('md-icon-button')\n expect(button, 'the switch should be a button, not a bare icon').to.exist\n\n const name = button!.getAttribute('aria-label') ?? ''\n expect(name, 'an icon with no name is read as its glyph').to.include(other)\n })\n }\n\n it('a host can pass its own words', async () => {\n const el = (await fixture(\n html`<ox-event-view mode=\"monthly\" weekly-label=\"주간 보기\"></ox-event-view>`\n )) as OxEventView\n await settle(el)\n\n const button = (el.renderRoot as ShadowRoot).querySelector('md-icon-button')\n expect(button!.getAttribute('aria-label')).to.equal('주간 보기')\n })\n})\n\n/*\n * A phone. The week's title is longer than the month's, and at 343px it left the controls too little room: the\n * group of previous · today · next, a plain block, broke onto three lines. [확인함] 2026-11-05 · 375px viewport\n */\ndescribe('the header on a phone', () => {\n for (const mode of ['monthly', 'weekly'] as const) {\n it(`${mode}: previous, today, next and the view switch stay on one line`, async () => {\n const el = (await fixture(\n html`<div style=\"width: 343px\">\n <ox-event-view mode=${mode} .eventProvider=${providerWithLongTitleOn(-1)}></ox-event-view>\n </div>`\n )) as HTMLElement\n\n const inner = await settle(el.querySelector('ox-event-view') as OxEventView)\n const nav = inner.renderRoot.querySelector('[nav]') as HTMLElement\n /* previous · today · next, and the host's view switch through the slot */\n const slot = nav.querySelector('slot') as HTMLSlotElement\n const controls = [...Array.from(nav.children).filter(one => one !== slot), ...slot.assignedElements()]\n const tops = controls.map(one => Math.round(one.getBoundingClientRect().top + one.getBoundingClientRect().height / 2))\n\n expect(tops.length).to.equal(4)\n expect(new Set(tops).size, `the controls stand on ${new Set(tops).size} lines`).to.equal(1)\n\n const head = inner.renderRoot.querySelector('[head]') as HTMLElement\n expect(head.scrollWidth <= head.clientWidth, 'the header is wider than the calendar').to.equal(true)\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","../../../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/calendar-monthly-styles.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/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../../node_modules/@material/web/iconbutton/internal/icon-button.d.ts","../../../node_modules/@material/web/iconbutton/icon-button.d.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/dayjs/esm/locale/types.d.ts","../../../node_modules/dayjs/esm/locale/index.d.ts","../../../node_modules/dayjs/esm/index.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","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../utils/dist/src/sleep.d.ts","../../utils/dist/src/address.d.ts","../../utils/dist/src/async-lock.d.ts","../../utils/dist/src/file-drop-helper.d.ts","../../utils/dist/src/file-acceptance.d.ts","../../utils/dist/src/context-path.d.ts","../../utils/dist/src/os.d.ts","../../utils/dist/src/swipe-listener.d.ts","../../utils/dist/src/fullscreen.d.ts","../../utils/dist/src/parse-jwt.d.ts","../../utils/dist/src/password-pattern.d.ts","../../utils/dist/src/closest-element.d.ts","../../utils/dist/src/detect-overflow.d.ts","../../utils/dist/src/has-overflow.d.ts","../../utils/dist/src/timecapsule/snapshot-taker.d.ts","../../utils/dist/src/timecapsule/timecapsule.d.ts","../../utils/dist/src/timecapsule/index.d.ts","../../utils/dist/src/clipboard.d.ts","../../utils/dist/src/format.d.ts","../../utils/dist/src/adjust-list-param.d.ts","../../utils/dist/src/is-unvalued.d.ts","../../utils/dist/src/stringify-bignum.d.ts","../../utils/dist/src/encode-form-params.d.ts","../../utils/dist/src/cookie.d.ts","../../utils/dist/src/number-parser.d.ts","../../utils/dist/src/longpressable.d.ts","../../utils/dist/src/decode-html.d.ts","../../utils/dist/src/script-loader.d.ts","../../utils/dist/src/google-maps-loader.d.ts","../../utils/dist/src/reactive-controllers/tooltip-reactive-controller.d.ts","../../utils/dist/src/reactive-controllers/index.d.ts","../../utils/dist/src/index.d.ts","../src/day-overflow.ts","../../../node_modules/dayjs/esm/plugin/weekday/index.d.ts","../../../node_modules/dayjs/esm/plugin/weekofyear/index.d.ts","../src/types.ts","../src/calendar-monthly.ts","../src/calendar-weekly-styles.ts","../src/calendar-weekly.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-event-view.ts","../src/index.ts","../stories/index.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/calendar-layout.test.ts","../test/day-overflow.test.ts","../test/day-state.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":[[193,258,266,271,274,276,277,278,291],[80,193,258,266,271,274,276,277,278,291],[53,80,193,258,266,271,274,276,277,278,291],[53,80,88,193,258,266,271,274,276,277,278,291],[82,193,258,266,271,274,276,277,278,291],[51,52,193,258,266,271,274,276,277,278,291],[56,59,63,65,66,67,68,69,193,258,266,271,274,276,277,278,291],[70,193,258,266,271,274,276,277,278,291],[59,71,193,258,266,271,274,276,277,278,291],[59,61,193,258,266,271,274,276,277,278,291],[59,62,193,258,266,271,274,276,277,278,291],[59,75,193,258,266,271,274,276,277,278,291],[56,59,193,258,266,271,274,276,277,278,291],[59,73,193,258,266,271,274,276,277,278,291],[59,193,258,266,271,274,276,277,278,291],[59,66,193,258,266,271,274,276,277,278,291],[59,66,67,193,258,266,271,274,276,277,278,291],[56,59,61,193,258,266,271,274,276,277,278,291],[59,64,193,258,266,271,274,276,277,278,291],[158,159,193,258,266,271,274,276,277,278,291],[160,193,258,266,271,274,276,277,278,291],[159,161,193,258,266,271,274,276,277,278,291],[176,177,193,258,266,271,274,276,277,278,291],[176,193,258,266,271,274,276,277,278,291],[172,174,180,181,182,185,186,193,258,266,271,274,276,277,278,291],[175,178,193,258,266,271,274,276,277,278,291],[179,193,258,266,271,274,276,277,278,291],[175,179,184,193,258,266,271,274,276,277,278,291],[175,178,183,193,258,266,271,274,276,277,278,291],[158,171,187,193,258,266,271,274,276,277,278,291],[162,165,166,170,193,258,266,271,274,276,277,278,291],[158,193,258,266,271,274,276,277,278,291],[193,255,256,258,266,271,274,276,277,278,291],[193,257,258,266,271,274,276,277,278,291],[258,266,271,274,276,277,278,291],[193,258,266,271,274,276,277,278,291,300],[193,258,259,264,266,269,271,274,276,277,278,280,291,296,309],[193,258,259,260,266,269,271,274,276,277,278,291],[193,258,261,266,271,274,276,277,278,291,310],[193,258,262,263,266,271,274,276,277,278,282,291],[193,258,263,266,271,274,276,277,278,291,296,306],[193,258,264,266,269,271,274,276,277,278,280,291],[193,257,258,265,266,271,274,276,277,278,291],[193,258,266,267,271,274,276,277,278,291],[193,258,266,268,269,271,274,276,277,278,291],[193,257,258,266,269,271,274,276,277,278,291],[193,258,266,269,271,272,274,276,277,278,291,296,309],[193,258,266,269,271,272,274,276,277,278,291,298,300],[193,245,258,266,269,271,273,274,276,277,278,280,291,296,309],[193,258,266,269,271,273,274,276,277,278,280,291,296,306,309],[193,258,266,271,273,274,275,276,277,278,291,296,306,309],[192,193,194,195,196,197,198,199,200,201,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,282,283,284,285,286,287,288,289,290,291,292,293,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],[193,258,266,269,271,274,276,277,278,291],[193,258,266,271,274,276,278,291],[193,258,266,271,274,276,277,278,279,291,309],[193,258,266,269,271,274,276,277,278,280,291,296],[193,258,266,271,274,276,277,278,282,291],[193,258,266,271,274,276,277,278,283,291],[193,258,266,269,271,274,276,277,278,286,291],[193,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317],[193,258,266,271,274,276,277,278,288,291],[193,258,266,271,274,276,277,278,289,291],[193,258,263,266,271,272,274,276,277,278,280,291,298,306],[193,258,266,269,271,274,276,277,278,291,292],[193,258,266,271,274,276,277,278,291,293,310,314],[193,258,266,269,271,274,276,277,278,291,296,298,299,300],[193,258,266,271,274,276,277,278,291,297,300],[193,258,266,269,271,274,276,277,278,291,296,298],[193,258,266,269,271,274,276,277,278,291,296,299,300],[193,258,266,271,274,276,277,278,291,300,310],[193,258,266,271,274,276,277,278,291,301],[193,255,258,266,271,274,276,277,278,291,296,303,309],[193,258,266,271,274,276,277,278,291,296,302],[193,258,266,269,271,274,276,277,278,291,304,305],[193,258,266,271,274,276,277,278,291,304,305],[193,258,263,266,271,274,276,277,278,280,291,296,306],[193,258,266,271,274,276,277,278,291,307],[193,258,266,271,274,276,277,278,280,291,308],[193,258,266,271,273,274,276,277,278,289,291,309],[193,258,266,271,274,276,277,278,291,310,311],[193,258,263,266,271,274,276,277,278,291,311],[193,258,266,271,274,276,277,278,291,296,312],[193,258,266,271,272,274,276,277,278,291],[193,258,266,271,274,276,277,278,279,291,314],[193,258,266,271,274,276,277,278,291,315],[193,258,261,266,271,274,276,277,278,291],[193,258,263,266,271,274,276,277,278,291],[193,258,266,271,274,276,277,278,291,310],[193,245,258,266,271,274,276,277,278,291],[193,258,266,271,274,276,277,278,291,309],[193,258,266,271,274,276,277,278,291,316],[193,258,266,271,274,276,277,278,286,291],[193,258,266,271,274,276,277,278,291,305],[193,245,258,266,269,271,272,274,276,277,278,280,286,291,296,300,309,312,314,316],[193,258,266,271,274,276,277,278,291,296,317],[193,258,266,271,274,276,277,278,291,298,318],[158,168,169,193,258,266,271,274,276,277,278,291],[168,193,258,266,271,274,276,277,278,291],[167,193,258,266,271,274,276,277,278,291],[164,193,258,266,271,274,276,277,278,291],[163,193,258,266,271,274,276,277,278,291],[78,193,258,266,271,274,276,277,278,291],[77,193,258,266,271,274,276,277,278,291],[79,127,193,258,266,271,274,276,277,278,291],[79,126,193,258,266,271,274,276,277,278,291],[53,56,193,258,266,271,274,276,277,278,291],[56,193,258,266,271,274,276,277,278,291],[54,55,193,258,266,271,274,276,277,278,291],[81,82,83,84,85,86,87,88,89,193,258,266,271,274,276,277,278,291],[91,193,258,266,271,274,276,277,278,291],[53,56,57,58,193,258,266,271,274,276,277,278,291],[173,193,258,266,271,274,276,277,278,291],[49,193,258,266,271,274,276,277,278,291],[193,208,211,214,215,258,266,271,274,276,277,278,291,309],[193,211,258,266,271,274,276,277,278,291,296,309],[193,211,215,258,266,271,274,276,277,278,291,309],[193,258,266,271,274,276,277,278,291,296],[193,205,258,266,271,274,276,277,278,291],[193,209,258,266,271,274,276,277,278,291],[193,207,208,211,258,266,271,274,276,277,278,291,309],[193,258,266,271,274,276,277,278,280,291,306],[193,258,266,271,274,276,277,278,291,319],[193,205,258,266,271,274,276,277,278,291,319],[193,207,211,258,266,271,274,276,277,278,280,291,309],[193,202,203,204,206,210,258,266,269,271,274,276,277,278,291,296,309],[193,211,258,266,271,274,276,277,278,291],[193,211,220,229,258,266,271,274,276,277,278,291],[193,203,209,258,266,271,274,276,277,278,291],[193,211,239,240,258,266,271,274,276,277,278,291],[193,203,206,211,258,266,271,274,276,277,278,291,300,309,319],[193,207,211,258,266,271,274,276,277,278,291,309],[193,202,258,266,271,274,276,277,278,291],[193,205,206,207,209,210,211,212,213,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,240,241,242,243,244,258,266,271,274,276,277,278,291],[193,211,232,235,258,266,271,274,276,277,278,291],[193,211,220,222,223,258,266,271,274,276,277,278,291],[193,209,211,222,224,258,266,271,274,276,277,278,291],[193,210,258,266,271,274,276,277,278,291],[193,203,205,211,258,266,271,274,276,277,278,291],[193,211,215,222,224,258,266,271,274,276,277,278,291],[193,215,258,266,271,274,276,277,278,291],[193,209,211,214,258,266,271,274,276,277,278,291,309],[193,203,207,211,220,258,266,271,274,276,277,278,291],[193,211,232,258,266,271,274,276,277,278,291],[193,224,258,266,271,274,276,277,278,291],[193,203,207,211,215,258,266,271,274,276,277,278,291],[193,205,211,239,258,266,271,274,276,277,278,291,300,316,319],[50,59,193,258,266,271,274,276,277,278,291],[50,59,60,72,74,76,79,90,92,124,125,128,193,258,266,271,274,276,277,278,291],[50,59,72,74,76,79,90,92,124,125,128,130,193,258,266,271,274,276,277,278,291],[50,193,258,266,271,274,276,277,278,291],[50,125,128,155,193,258,266,271,274,276,277,278,291],[50,59,74,76,90,128,129,131,154,193,258,266,271,274,276,277,278,291],[50,59,79,126,127,193,258,266,271,274,276,277,278,291],[50,59,128,155,193,258,266,271,274,276,277,278,291],[50,128,155,188,193,258,266,271,274,276,277,278,291],[50,125,128,155,188,193,258,266,271,274,276,277,278,291],[132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,193,258,266,271,274,276,277,278,291],[93,94,95,96,97,98,99,100,101,102,103,104,105,106,109,110,111,112,113,114,115,116,117,118,119,120,121,123,193,258,266,271,274,276,277,278,291],[122,193,258,266,271,274,276,277,278,291],[107,108,193,258,266,271,274,276,277,278,291],[108,193,258,266,271,274,276,277,278,291],[107,193,258,266,271,274,276,277,278,291]],"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":"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":"6a7d361d10580a3a353421e7751c39c096e67b2373eb559a3afffe9fa8b1e589","signature":"472fcc8d2e57ead8b3053190e4d167a30e002445e35ac0a3ea0d91ed10841be4"},{"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":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},{"version":"76c0db0b42c4cc04e589c186b70f38078ba8e647eba0dc9f78d6293438d5987d","impliedFormat":99},{"version":"98ef8c0a86b22a0df8154bad5cca37c9e3223db6dec4400f3c491d6a1dc7d2e7","affectsGlobalScope":true,"impliedFormat":99},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"73a0ee6395819b063df4b148211985f2e1442945c1a057204cf4cf6281760dc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f0717e1c516c7b6b6acbc2177d1bd910a5d1abb757c85182ca8d089c9b6e398","impliedFormat":1},{"version":"3c5bb5207df7095882400323d692957e90ec17323ccff5fd5f29a1ecf3b165d0","impliedFormat":1},{"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},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},"05cfea0488751015b0b85911b6cdcde7c6cebdd9b8cada1ec0b5c1736357a552","2367f21d79c673f4cb1e5d23198c39996d2fa9ce58384fae145f93d767567034","f5800813e5c0d6c27d73b76f2c99f39bdfd6229d03553a8a9ae485f6aeb94425","074bbe086ea920fd82ad7da4566f8c43cff3dbd800c4874ae0dae9a80b9de6a8","1a4281bf48e7cbd72c04fc9ecac79a63306aa36aff82a1af18da9097caacbaeb","b085d2f3c839ad9634c9b1ea8bb2d4e3a321af1392d8ac44a79b99c0d8d194aa","ee11b7061adce4a1c0370620949a57851215b152a5632d2faf1aedbc90ad0520","f8c86fcbfb0a1e69a0ed28d3249cc33c312fa23a39c17e15cbbcc539bdcdc303","85e0f00b17c3ae8cd88438c754a2c43f4a9361e685b97a70e52e33afbf62488f","39d2d450df6efbf38585fd316f18922c8ac3fdfd4c3fc412d0bee34e2bc86378","4dcdfe4c18557fc02d8cb22cb422cb98bfeba8158aaf18cc66f9d99293ebe2c8","7efea6f2270a14f1b0d5f472f2a6fcb0a97beb677299e10b073cc2abdabeef51","642bd83dc8b11abc31785975f869fea5ab2dd84246acd13c6ad7e769fea95150","712dbb6cc6020b1dae2a2031b8a117717318652f73fd5042d508f7de416c47b7","637a5a32ea266fdaa0efa1c4d25ce2eed3b420dcd7836a6952374ddd95aaccaf","145e598b9f835b46757263cf952af5b8735d0bfb08a6dff2187f7b5611e17578","f499d7fb533781939c7a5ab778ac6e6c8ffe65601b1a61a843c36ee0013f05b6","7fcb76be88d4a64f6318b5a24b57021d7463f24485a3d1a931bf664c7e437534","d75490903da576f8fd0ee1c990858cb31e605d3db925593c12728bd0949eedfe","098ec42cd54c2b3354584c4fe8ad143040114891dde762741522b62788772f0d","1e73d612f806d183d6c16c4135c16c1a14dd827c1a67097e72ab1841852bfcb9","30046b0787c577061d43e498b507da8a249fbc58bbe33a09a7bef777e1d5fb67","cb2de9f1d7d286191834eeb331d23dc69eeb322745114ddad1695e4c575b5feb","dc2461db89dde29306a73a2926e2cf874e981ef034412f4d1e3d06d45bb3127e","13a5d8ec52111b64ed8fdcb47ab664b60085733c46c44aede33fd2926840ac31","1cf02270a889fcc3fa5863734fcdbea410d3b4dd71e4678a894a48028f836f6e","4f69dd36aa514494e2665a9dd1ecbb94f705c37f13554aa6f0c4b55d47dcfec1","3cb5734586224b2daa65a52cbe2428195e1542681ac85e4d7e9ca691e841db5e","9829414bd4780db78f4d5d6a4f57fd0fea3e7d24cdc192fb2cd1a362b91b0551","1ecf5de9c016d0b07533f2eef218c3771a013c38533824f96743092aa97c8377","51f3be4aa09529ea1ad83a3d66830075a49e3e630df25d9892ef5708bb00de55","b0a11a486672bea9d478716662b9120039de0c20581c0a07043f231841b1b3ba",{"version":"eec8e5fd97a48afd1cf8f34bd6bdfe102dc9ecc97b33ebe3297aaf0d3ebe338f","signature":"c1366151664f361688c857af72674f3272ff596eba53fac44f7de327510d9e9d"},{"version":"17a5d07dc6ce4343d625f594693fd887ca453702b5c21299b29cadb4e48b540a","impliedFormat":1},{"version":"bef3344291a5376aa1623daf4fdc1a3c4c711ce7c9f02a404ee43396649ba616","impliedFormat":1},{"version":"eb19567144a0ffcc807cc295a3133f9245f99afb249d84c554109473fbe7b669","signature":"de0feb35c55ffc6a1891980aa35697f7afe490233f7043eaa43f6a15ef4357c5"},{"version":"f278e794ccdba74fdb73629dc84d5467dfaf8cf732022168cc25238a1c3be253","signature":"3b731cfcecf3d97f3a59686cfbb99684a6d10a64030ef64f478661e39aa1c032"},{"version":"82e066d94bf617e5c7485f596d41c5ad0558c70d7fbf3a36dc2945a081fcded6","signature":"48e115797224ff43bdf84638e950523f86cf220b90f50c2a9f27c8971bbaa632"},{"version":"ba100fc5e25f8421f17f7f2c9d1d65e734d69196b328d7d13710c0045828da7c","signature":"93f8e2f2c0f91ae6f92978253a516927684c08f27f8ceeda833c8b0543a7ab1e"},"cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","a90983680f83b936a61f684d0a950132419f2717f37b2ad436a65f5d48cbb17e","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","c04405c54b9095528ba8d4006ff443a5aad3ea65611344c4522aab1608d0705f","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","d9f8946a29f08d831605e6a9005785842dfbe5b09e5d38b6bf5073a11453890a","f9dee09d52541244f2a093e8faa29bec9527aad98111279fea51a10a95b9bfd4","b337608772b9df38e69b89837ecf758100e6c1c7acd4d0f10595f738faf1d034","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","302a06cbb95a5c6041745f5f8f64a0a7b2fe7926f2ee71f96644f473d6804a44","bfa39163a2b652b382fa019284a857b7a8a25eb3c4469124088530cead0ba347","a2f3de4d473e2dab6128eb8f69cfad59e9894ad25be6ec7213900e9236971582","6a53004a10b7472c10c900aac074c24cd127b3ddbb9105dc8b3fca25990aa977","73868c81078b6ee9a3702c45413d93f367f652c91b32221f40f6b5f60333f979","1ac2b7818cb72193c46f6b78732a65953a017e339624ed6555d165ca490bbe7a",{"version":"dc4db2427d5a468844c519a8212295e74188e0ed14f1d8c928146c31755d4ee7","signature":"57e5fe41b974d0c644b5b6dd3a4da351b54039b1f13bf359d44313bf37d275dd"},{"version":"83911573ef099765d6177a8be7cff96b1de7f573342dc192e252ea0f1830b546","signature":"d2fdf167ed9afa7a9fd53a7fa60d85e984414e3e374c9cc2a2f011a611fbb435"},{"version":"406bd66870748c1931dfe37dcffbe294c958ecfec19ad099c44a6b5490159fd8","signature":"5ef16bd781d361a6c9f77bb612ce034716775c9bbca40917aa62fd363fa0863d"},{"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":"304f2fe6c638e203084c8ba052cdff59a8fbb4d5f932566b310627a38c5d14d6","signature":"bcc9ee94452351ece5593f83009de0183dcf86803e7141a7b341c811cea33390"},{"version":"cba460c35b3a6bf5a2a381f99c9beffe3fc924e2e7c7003c790ce5074dc2fdfc","signature":"bcc9ee94452351ece5593f83009de0183dcf86803e7141a7b341c811cea33390"},{"version":"e8842541d986af8ff4fcd4283c4decf069ab446c9330654b3d8f1f5a278efa1a","signature":"bcc9ee94452351ece5593f83009de0183dcf86803e7141a7b341c811cea33390"},{"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":"cd0d57a97c2f15c6dd6366e4d1fbf2e3accff61a8ad0f1021065723e1470e61f","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[60,125,[128,131],[155,157],[189,191]],"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":99,"useDefineForClassFields":false},"referencedMap":[[51,1],[80,1],[81,2],[84,3],[82,3],[86,3],[89,4],[88,3],[87,3],[85,3],[83,5],[52,1],[53,6],[70,7],[71,8],[72,9],[62,10],[63,11],[76,12],[75,13],[74,14],[73,7],[61,15],[67,16],[68,17],[69,17],[66,1],[64,18],[65,19],[160,20],[161,21],[159,1],[162,22],[176,1],[178,23],[177,24],[187,25],[172,1],[179,26],[180,27],[181,1],[182,24],[185,28],[175,15],[184,29],[186,27],[188,30],[171,31],[166,32],[158,1],[320,1],[255,33],[256,33],[257,34],[193,35],[258,36],[259,37],[260,38],[261,39],[262,40],[263,41],[264,42],[265,43],[266,44],[267,44],[268,45],[269,46],[270,1],[271,47],[272,48],[194,1],[192,1],[273,49],[274,50],[275,51],[319,52],[276,53],[277,54],[278,53],[279,55],[280,56],[282,57],[283,58],[284,58],[285,58],[286,59],[287,60],[288,61],[289,62],[290,63],[291,64],[292,64],[293,65],[294,1],[295,1],[296,66],[297,67],[298,68],[299,69],[300,70],[301,71],[302,72],[303,73],[304,74],[305,75],[306,76],[307,77],[308,78],[309,79],[310,80],[311,81],[312,82],[313,83],[314,84],[315,85],[195,53],[196,1],[197,86],[198,87],[199,1],[200,88],[201,1],[246,89],[247,90],[248,91],[249,91],[250,92],[251,1],[252,36],[253,93],[254,90],[316,94],[317,95],[318,96],[170,97],[169,98],[168,99],[167,1],[55,1],[281,1],[163,32],[165,100],[164,101],[79,102],[78,103],[77,1],[126,104],[127,105],[57,106],[54,107],[91,107],[58,1],[56,108],[173,107],[90,109],[92,110],[183,107],[59,111],[174,112],[50,113],[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],[220,114],[234,115],[217,116],[235,117],[244,118],[208,119],[209,120],[207,121],[243,122],[238,123],[242,124],[211,125],[221,126],[231,127],[210,128],[241,129],[205,130],[206,123],[212,126],[213,1],[219,131],[216,126],[203,132],[245,133],[236,134],[224,135],[223,126],[225,136],[228,137],[222,138],[226,139],[239,122],[214,140],[215,141],[229,142],[204,117],[233,143],[232,126],[218,141],[227,144],[230,145],[237,1],[202,1],[240,146],[60,147],[129,148],[130,147],[131,149],[125,150],[156,151],[155,152],[128,153],[157,154],[189,155],[190,156],[191,155],[149,15],[143,15],[138,15],[139,15],[153,15],[135,1],[137,15],[140,15],[141,15],[152,15],[150,15],[136,15],[144,15],[132,15],[154,157],[147,15],[148,15],[151,15],[142,15],[145,15],[133,15],[134,15],[146,15],[94,1],[112,1],[95,1],[110,1],[104,1],[98,1],[116,1],[119,1],[105,1],[115,1],[97,1],[96,1],[111,1],[101,1],[121,1],[106,1],[124,158],[113,1],[118,1],[117,1],[99,1],[102,1],[103,1],[123,159],[122,15],[120,1],[93,1],[114,1],[100,1],[109,160],[107,161],[108,162]],"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","../../../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/calendar-monthly-styles.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/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../../node_modules/@material/web/iconbutton/internal/icon-button.d.ts","../../../node_modules/@material/web/iconbutton/icon-button.d.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/dayjs/esm/locale/types.d.ts","../../../node_modules/dayjs/esm/locale/index.d.ts","../../../node_modules/dayjs/esm/index.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","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../utils/dist/src/sleep.d.ts","../../utils/dist/src/address.d.ts","../../utils/dist/src/async-lock.d.ts","../../utils/dist/src/file-drop-helper.d.ts","../../utils/dist/src/file-acceptance.d.ts","../../utils/dist/src/context-path.d.ts","../../utils/dist/src/os.d.ts","../../utils/dist/src/swipe-listener.d.ts","../../utils/dist/src/fullscreen.d.ts","../../utils/dist/src/parse-jwt.d.ts","../../utils/dist/src/password-pattern.d.ts","../../utils/dist/src/closest-element.d.ts","../../utils/dist/src/detect-overflow.d.ts","../../utils/dist/src/has-overflow.d.ts","../../utils/dist/src/timecapsule/snapshot-taker.d.ts","../../utils/dist/src/timecapsule/timecapsule.d.ts","../../utils/dist/src/timecapsule/index.d.ts","../../utils/dist/src/clipboard.d.ts","../../utils/dist/src/format.d.ts","../../utils/dist/src/adjust-list-param.d.ts","../../utils/dist/src/is-unvalued.d.ts","../../utils/dist/src/stringify-bignum.d.ts","../../utils/dist/src/encode-form-params.d.ts","../../utils/dist/src/cookie.d.ts","../../utils/dist/src/number-parser.d.ts","../../utils/dist/src/longpressable.d.ts","../../utils/dist/src/decode-html.d.ts","../../utils/dist/src/script-loader.d.ts","../../utils/dist/src/google-maps-loader.d.ts","../../utils/dist/src/reactive-controllers/tooltip-reactive-controller.d.ts","../../utils/dist/src/reactive-controllers/index.d.ts","../../utils/dist/src/index.d.ts","../src/day-overflow.ts","../../../node_modules/dayjs/esm/plugin/weekday/index.d.ts","../../../node_modules/dayjs/esm/plugin/weekofyear/index.d.ts","../src/types.ts","../src/calendar-monthly.ts","../src/calendar-weekly-styles.ts","../src/calendar-weekly.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-event-view.ts","../src/index.ts","../stories/index.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/calendar-layout.test.ts","../test/day-overflow.test.ts","../test/day-state.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":[[192,257,265,270,273,275,276,277,290],[80,192,257,265,270,273,275,276,277,290],[53,80,192,257,265,270,273,275,276,277,290],[53,80,88,192,257,265,270,273,275,276,277,290],[82,192,257,265,270,273,275,276,277,290],[51,52,192,257,265,270,273,275,276,277,290],[56,59,63,65,66,67,68,69,192,257,265,270,273,275,276,277,290],[70,192,257,265,270,273,275,276,277,290],[59,71,192,257,265,270,273,275,276,277,290],[59,61,192,257,265,270,273,275,276,277,290],[59,62,192,257,265,270,273,275,276,277,290],[59,75,192,257,265,270,273,275,276,277,290],[56,59,192,257,265,270,273,275,276,277,290],[59,73,192,257,265,270,273,275,276,277,290],[59,192,257,265,270,273,275,276,277,290],[59,66,192,257,265,270,273,275,276,277,290],[59,66,67,192,257,265,270,273,275,276,277,290],[56,59,61,192,257,265,270,273,275,276,277,290],[59,64,192,257,265,270,273,275,276,277,290],[158,159,192,257,265,270,273,275,276,277,290],[160,192,257,265,270,273,275,276,277,290],[159,161,192,257,265,270,273,275,276,277,290],[175,176,192,257,265,270,273,275,276,277,290],[175,192,257,265,270,273,275,276,277,290],[171,173,179,180,181,184,185,192,257,265,270,273,275,276,277,290],[174,177,192,257,265,270,273,275,276,277,290],[178,192,257,265,270,273,275,276,277,290],[174,178,183,192,257,265,270,273,275,276,277,290],[174,177,182,192,257,265,270,273,275,276,277,290],[158,170,186,192,257,265,270,273,275,276,277,290],[162,165,166,169,192,257,265,270,273,275,276,277,290],[158,192,257,265,270,273,275,276,277,290],[192,254,255,257,265,270,273,275,276,277,290],[192,256,257,265,270,273,275,276,277,290],[257,265,270,273,275,276,277,290],[192,257,265,270,273,275,276,277,290,299],[192,257,258,263,265,268,270,273,275,276,277,279,290,295,308],[192,257,258,259,265,268,270,273,275,276,277,290],[192,257,260,265,270,273,275,276,277,290,309],[192,257,261,262,265,270,273,275,276,277,281,290],[192,257,262,265,270,273,275,276,277,290,295,305],[192,257,263,265,268,270,273,275,276,277,279,290],[192,256,257,264,265,270,273,275,276,277,290],[192,257,265,266,270,273,275,276,277,290],[192,257,265,267,268,270,273,275,276,277,290],[192,256,257,265,268,270,273,275,276,277,290],[192,257,265,268,270,271,273,275,276,277,290,295,308],[192,257,265,268,270,271,273,275,276,277,290,297,299],[192,244,257,265,268,270,272,273,275,276,277,279,290,295,308],[192,257,265,268,270,272,273,275,276,277,279,290,295,305,308],[192,257,265,270,272,273,274,275,276,277,290,295,305,308],[191,192,193,194,195,196,197,198,199,200,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317],[192,257,265,268,270,273,275,276,277,290],[192,257,265,270,273,275,277,290],[192,257,265,270,273,275,276,277,278,290,308],[192,257,265,268,270,273,275,276,277,279,290,295],[192,257,265,270,273,275,276,277,281,290],[192,257,265,270,273,275,276,277,282,290],[192,257,265,268,270,273,275,276,277,285,290],[192,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316],[192,257,265,270,273,275,276,277,287,290],[192,257,265,270,273,275,276,277,288,290],[192,257,262,265,270,271,273,275,276,277,279,290,297,305],[192,257,265,268,270,273,275,276,277,290,291],[192,257,265,270,273,275,276,277,290,292,309,313],[192,257,265,268,270,273,275,276,277,290,295,297,298,299],[192,257,265,270,273,275,276,277,290,296,299],[192,257,265,268,270,273,275,276,277,290,295,297],[192,257,265,268,270,273,275,276,277,290,295,298,299],[192,257,265,270,273,275,276,277,290,299,309],[192,257,265,270,273,275,276,277,290,300],[192,254,257,265,270,273,275,276,277,290,295,302,308],[192,257,265,270,273,275,276,277,290,295,301],[192,257,265,268,270,273,275,276,277,290,303,304],[192,257,265,270,273,275,276,277,290,303,304],[192,257,262,265,270,273,275,276,277,279,290,295,305],[192,257,265,270,273,275,276,277,290,306],[192,257,265,270,273,275,276,277,279,290,307],[192,257,265,270,272,273,275,276,277,288,290,308],[192,257,265,270,273,275,276,277,290,309,310],[192,257,262,265,270,273,275,276,277,290,310],[192,257,265,270,273,275,276,277,290,295,311],[192,257,265,270,271,273,275,276,277,290],[192,257,265,270,273,275,276,277,278,290,313],[192,257,265,270,273,275,276,277,290,314],[192,257,260,265,270,273,275,276,277,290],[192,257,262,265,270,273,275,276,277,290],[192,257,265,270,273,275,276,277,290,309],[192,244,257,265,270,273,275,276,277,290],[192,257,265,270,273,275,276,277,290,308],[192,257,265,270,273,275,276,277,290,315],[192,257,265,270,273,275,276,277,285,290],[192,257,265,270,273,275,276,277,290,304],[192,244,257,265,268,270,271,273,275,276,277,279,285,290,295,299,308,311,313,315],[192,257,265,270,273,275,276,277,290,295,316],[192,257,265,270,273,275,276,277,290,297,317],[158,168,192,257,265,270,273,275,276,277,290],[167,192,257,265,270,273,275,276,277,290],[164,192,257,265,270,273,275,276,277,290],[163,192,257,265,270,273,275,276,277,290],[78,192,257,265,270,273,275,276,277,290],[77,192,257,265,270,273,275,276,277,290],[79,127,192,257,265,270,273,275,276,277,290],[79,126,192,257,265,270,273,275,276,277,290],[53,56,192,257,265,270,273,275,276,277,290],[56,192,257,265,270,273,275,276,277,290],[54,55,192,257,265,270,273,275,276,277,290],[81,82,83,84,85,86,87,88,89,192,257,265,270,273,275,276,277,290],[91,192,257,265,270,273,275,276,277,290],[53,56,57,58,192,257,265,270,273,275,276,277,290],[172,192,257,265,270,273,275,276,277,290],[49,192,257,265,270,273,275,276,277,290],[192,207,210,213,214,257,265,270,273,275,276,277,290,308],[192,210,257,265,270,273,275,276,277,290,295,308],[192,210,214,257,265,270,273,275,276,277,290,308],[192,257,265,270,273,275,276,277,290,295],[192,204,257,265,270,273,275,276,277,290],[192,208,257,265,270,273,275,276,277,290],[192,206,207,210,257,265,270,273,275,276,277,290,308],[192,257,265,270,273,275,276,277,279,290,305],[192,257,265,270,273,275,276,277,290,318],[192,204,257,265,270,273,275,276,277,290,318],[192,206,210,257,265,270,273,275,276,277,279,290,308],[192,201,202,203,205,209,257,265,268,270,273,275,276,277,290,295,308],[192,210,257,265,270,273,275,276,277,290],[192,210,219,228,257,265,270,273,275,276,277,290],[192,202,208,257,265,270,273,275,276,277,290],[192,210,238,239,257,265,270,273,275,276,277,290],[192,202,205,210,257,265,270,273,275,276,277,290,299,308,318],[192,206,210,257,265,270,273,275,276,277,290,308],[192,201,257,265,270,273,275,276,277,290],[192,204,205,206,208,209,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,243,257,265,270,273,275,276,277,290],[192,210,231,234,257,265,270,273,275,276,277,290],[192,210,219,221,222,257,265,270,273,275,276,277,290],[192,208,210,221,223,257,265,270,273,275,276,277,290],[192,209,257,265,270,273,275,276,277,290],[192,202,204,210,257,265,270,273,275,276,277,290],[192,210,214,221,223,257,265,270,273,275,276,277,290],[192,214,257,265,270,273,275,276,277,290],[192,208,210,213,257,265,270,273,275,276,277,290,308],[192,202,206,210,219,257,265,270,273,275,276,277,290],[192,210,231,257,265,270,273,275,276,277,290],[192,223,257,265,270,273,275,276,277,290],[192,202,206,210,214,257,265,270,273,275,276,277,290],[192,204,210,238,257,265,270,273,275,276,277,290,299,315,318],[50,59,192,257,265,270,273,275,276,277,290],[50,59,60,72,74,76,79,90,92,124,125,128,192,257,265,270,273,275,276,277,290],[50,59,72,74,76,79,90,92,124,125,128,130,192,257,265,270,273,275,276,277,290],[50,192,257,265,270,273,275,276,277,290],[50,125,128,155,192,257,265,270,273,275,276,277,290],[50,59,74,76,90,128,129,131,154,192,257,265,270,273,275,276,277,290],[50,59,79,126,127,192,257,265,270,273,275,276,277,290],[50,59,128,155,192,257,265,270,273,275,276,277,290],[50,128,155,187,192,257,265,270,273,275,276,277,290],[50,125,128,155,187,192,257,265,270,273,275,276,277,290],[132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,192,257,265,270,273,275,276,277,290],[93,94,95,96,97,98,99,100,101,102,103,104,105,106,109,110,111,112,113,114,115,116,117,118,119,120,121,123,192,257,265,270,273,275,276,277,290],[122,192,257,265,270,273,275,276,277,290],[107,108,192,257,265,270,273,275,276,277,290],[108,192,257,265,270,273,275,276,277,290],[107,192,257,265,270,273,275,276,277,290]],"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":"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":"8076ac82d279e914632e73517d81e47743a49aef398badf57388fc3686506fcf","signature":"472fcc8d2e57ead8b3053190e4d167a30e002445e35ac0a3ea0d91ed10841be4"},{"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":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},{"version":"76c0db0b42c4cc04e589c186b70f38078ba8e647eba0dc9f78d6293438d5987d","impliedFormat":99},{"version":"98ef8c0a86b22a0df8154bad5cca37c9e3223db6dec4400f3c491d6a1dc7d2e7","affectsGlobalScope":true,"impliedFormat":99},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"73a0ee6395819b063df4b148211985f2e1442945c1a057204cf4cf6281760dc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f0717e1c516c7b6b6acbc2177d1bd910a5d1abb757c85182ca8d089c9b6e398","impliedFormat":1},{"version":"3c5bb5207df7095882400323d692957e90ec17323ccff5fd5f29a1ecf3b165d0","impliedFormat":1},{"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},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},"05cfea0488751015b0b85911b6cdcde7c6cebdd9b8cada1ec0b5c1736357a552","2367f21d79c673f4cb1e5d23198c39996d2fa9ce58384fae145f93d767567034","f5800813e5c0d6c27d73b76f2c99f39bdfd6229d03553a8a9ae485f6aeb94425","074bbe086ea920fd82ad7da4566f8c43cff3dbd800c4874ae0dae9a80b9de6a8","1a4281bf48e7cbd72c04fc9ecac79a63306aa36aff82a1af18da9097caacbaeb","b085d2f3c839ad9634c9b1ea8bb2d4e3a321af1392d8ac44a79b99c0d8d194aa","ee11b7061adce4a1c0370620949a57851215b152a5632d2faf1aedbc90ad0520","f8c86fcbfb0a1e69a0ed28d3249cc33c312fa23a39c17e15cbbcc539bdcdc303","85e0f00b17c3ae8cd88438c754a2c43f4a9361e685b97a70e52e33afbf62488f","39d2d450df6efbf38585fd316f18922c8ac3fdfd4c3fc412d0bee34e2bc86378","4dcdfe4c18557fc02d8cb22cb422cb98bfeba8158aaf18cc66f9d99293ebe2c8","7efea6f2270a14f1b0d5f472f2a6fcb0a97beb677299e10b073cc2abdabeef51","642bd83dc8b11abc31785975f869fea5ab2dd84246acd13c6ad7e769fea95150","712dbb6cc6020b1dae2a2031b8a117717318652f73fd5042d508f7de416c47b7","637a5a32ea266fdaa0efa1c4d25ce2eed3b420dcd7836a6952374ddd95aaccaf","145e598b9f835b46757263cf952af5b8735d0bfb08a6dff2187f7b5611e17578","f499d7fb533781939c7a5ab778ac6e6c8ffe65601b1a61a843c36ee0013f05b6","7fcb76be88d4a64f6318b5a24b57021d7463f24485a3d1a931bf664c7e437534","d75490903da576f8fd0ee1c990858cb31e605d3db925593c12728bd0949eedfe","098ec42cd54c2b3354584c4fe8ad143040114891dde762741522b62788772f0d","1e73d612f806d183d6c16c4135c16c1a14dd827c1a67097e72ab1841852bfcb9","30046b0787c577061d43e498b507da8a249fbc58bbe33a09a7bef777e1d5fb67","cb2de9f1d7d286191834eeb331d23dc69eeb322745114ddad1695e4c575b5feb","dc2461db89dde29306a73a2926e2cf874e981ef034412f4d1e3d06d45bb3127e","13a5d8ec52111b64ed8fdcb47ab664b60085733c46c44aede33fd2926840ac31","1cf02270a889fcc3fa5863734fcdbea410d3b4dd71e4678a894a48028f836f6e","4f69dd36aa514494e2665a9dd1ecbb94f705c37f13554aa6f0c4b55d47dcfec1","3cb5734586224b2daa65a52cbe2428195e1542681ac85e4d7e9ca691e841db5e","9829414bd4780db78f4d5d6a4f57fd0fea3e7d24cdc192fb2cd1a362b91b0551","1ecf5de9c016d0b07533f2eef218c3771a013c38533824f96743092aa97c8377","51f3be4aa09529ea1ad83a3d66830075a49e3e630df25d9892ef5708bb00de55","b0a11a486672bea9d478716662b9120039de0c20581c0a07043f231841b1b3ba",{"version":"eec8e5fd97a48afd1cf8f34bd6bdfe102dc9ecc97b33ebe3297aaf0d3ebe338f","signature":"c1366151664f361688c857af72674f3272ff596eba53fac44f7de327510d9e9d"},{"version":"17a5d07dc6ce4343d625f594693fd887ca453702b5c21299b29cadb4e48b540a","impliedFormat":1},{"version":"bef3344291a5376aa1623daf4fdc1a3c4c711ce7c9f02a404ee43396649ba616","impliedFormat":1},{"version":"eb19567144a0ffcc807cc295a3133f9245f99afb249d84c554109473fbe7b669","signature":"de0feb35c55ffc6a1891980aa35697f7afe490233f7043eaa43f6a15ef4357c5"},{"version":"367666599b3db40a398d35f3e77e0e6af08501a8ce54ff008207155ea8b12ad1","signature":"3b731cfcecf3d97f3a59686cfbb99684a6d10a64030ef64f478661e39aa1c032"},{"version":"42e6b7b67f018c4a80edc4d9bc2993997b6689debf4854121b01071152d51695","signature":"48e115797224ff43bdf84638e950523f86cf220b90f50c2a9f27c8971bbaa632"},{"version":"33ad70f3ed4c83535e9a14c2082e7a75bd8198dd204e909c6ed9827f88ffad63","signature":"93f8e2f2c0f91ae6f92978253a516927684c08f27f8ceeda833c8b0543a7ab1e"},"cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","a90983680f83b936a61f684d0a950132419f2717f37b2ad436a65f5d48cbb17e","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","c04405c54b9095528ba8d4006ff443a5aad3ea65611344c4522aab1608d0705f","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","d9f8946a29f08d831605e6a9005785842dfbe5b09e5d38b6bf5073a11453890a","f9dee09d52541244f2a093e8faa29bec9527aad98111279fea51a10a95b9bfd4","b337608772b9df38e69b89837ecf758100e6c1c7acd4d0f10595f738faf1d034","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","302a06cbb95a5c6041745f5f8f64a0a7b2fe7926f2ee71f96644f473d6804a44","bfa39163a2b652b382fa019284a857b7a8a25eb3c4469124088530cead0ba347","a2f3de4d473e2dab6128eb8f69cfad59e9894ad25be6ec7213900e9236971582","6a53004a10b7472c10c900aac074c24cd127b3ddbb9105dc8b3fca25990aa977","73868c81078b6ee9a3702c45413d93f367f652c91b32221f40f6b5f60333f979","1ac2b7818cb72193c46f6b78732a65953a017e339624ed6555d165ca490bbe7a",{"version":"dc4db2427d5a468844c519a8212295e74188e0ed14f1d8c928146c31755d4ee7","signature":"57e5fe41b974d0c644b5b6dd3a4da351b54039b1f13bf359d44313bf37d275dd"},{"version":"83911573ef099765d6177a8be7cff96b1de7f573342dc192e252ea0f1830b546","signature":"d2fdf167ed9afa7a9fd53a7fa60d85e984414e3e374c9cc2a2f011a611fbb435"},{"version":"406bd66870748c1931dfe37dcffbe294c958ecfec19ad099c44a6b5490159fd8","signature":"5ef16bd781d361a6c9f77bb612ce034716775c9bbca40917aa62fd363fa0863d"},{"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":"7e30d72349971db4f838813682f3c55cd3db88ed0e93aad6ea450614393a8fc7","signature":"bcc9ee94452351ece5593f83009de0183dcf86803e7141a7b341c811cea33390"},{"version":"cba460c35b3a6bf5a2a381f99c9beffe3fc924e2e7c7003c790ce5074dc2fdfc","signature":"bcc9ee94452351ece5593f83009de0183dcf86803e7141a7b341c811cea33390"},{"version":"e8842541d986af8ff4fcd4283c4decf069ab446c9330654b3d8f1f5a278efa1a","signature":"bcc9ee94452351ece5593f83009de0183dcf86803e7141a7b341c811cea33390"},{"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":[60,125,[128,131],[155,157],[188,190]],"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":99,"useDefineForClassFields":false},"referencedMap":[[51,1],[80,1],[81,2],[84,3],[82,3],[86,3],[89,4],[88,3],[87,3],[85,3],[83,5],[52,1],[53,6],[70,7],[71,8],[72,9],[62,10],[63,11],[76,12],[75,13],[74,14],[73,7],[61,15],[67,16],[68,17],[69,17],[66,1],[64,18],[65,19],[160,20],[161,21],[159,1],[162,22],[175,1],[177,23],[176,24],[186,25],[171,1],[178,26],[179,27],[180,1],[181,24],[184,28],[174,15],[183,29],[185,27],[187,30],[170,31],[166,32],[158,1],[319,1],[254,33],[255,33],[256,34],[192,35],[257,36],[258,37],[259,38],[260,39],[261,40],[262,41],[263,42],[264,43],[265,44],[266,44],[267,45],[268,46],[269,1],[270,47],[271,48],[193,1],[191,1],[272,49],[273,50],[274,51],[318,52],[275,53],[276,54],[277,53],[278,55],[279,56],[281,57],[282,58],[283,58],[284,58],[285,59],[286,60],[287,61],[288,62],[289,63],[290,64],[291,64],[292,65],[293,1],[294,1],[295,66],[296,67],[297,68],[298,69],[299,70],[300,71],[301,72],[302,73],[303,74],[304,75],[305,76],[306,77],[307,78],[308,79],[309,80],[310,81],[311,82],[312,83],[313,84],[314,85],[194,53],[195,1],[196,86],[197,87],[198,1],[199,88],[200,1],[245,89],[246,90],[247,91],[248,91],[249,92],[250,1],[251,36],[252,93],[253,90],[315,94],[316,95],[317,96],[169,97],[168,98],[167,1],[55,1],[280,1],[163,32],[165,99],[164,100],[79,101],[78,102],[77,1],[126,103],[127,104],[57,105],[54,106],[91,106],[58,1],[56,107],[172,106],[90,108],[92,109],[182,106],[59,110],[173,111],[50,112],[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],[219,113],[233,114],[216,115],[234,116],[243,117],[207,118],[208,119],[206,120],[242,121],[237,122],[241,123],[210,124],[220,125],[230,126],[209,127],[240,128],[204,129],[205,122],[211,125],[212,1],[218,130],[215,125],[202,131],[244,132],[235,133],[223,134],[222,125],[224,135],[227,136],[221,137],[225,138],[238,121],[213,139],[214,140],[228,141],[203,116],[232,142],[231,125],[217,140],[226,143],[229,144],[236,1],[201,1],[239,145],[60,146],[129,147],[130,146],[131,148],[125,149],[156,150],[155,151],[128,152],[157,153],[188,154],[189,155],[190,154],[149,15],[143,15],[138,15],[139,15],[153,15],[135,1],[137,15],[140,15],[141,15],[152,15],[150,15],[136,15],[144,15],[132,15],[154,156],[147,15],[148,15],[151,15],[142,15],[145,15],[133,15],[134,15],[146,15],[94,1],[112,1],[95,1],[110,1],[104,1],[98,1],[116,1],[119,1],[105,1],[115,1],[97,1],[96,1],[111,1],[101,1],[121,1],[106,1],[124,157],[113,1],[118,1],[117,1],[99,1],[102,1],[103,1],[123,158],[122,15],[120,1],[93,1],[114,1],[100,1],[109,159],[107,160],[108,161]],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@operato/event-view",
|
|
3
3
|
"description": "Webcomponent event-view following open-wc recommendations",
|
|
4
4
|
"author": "heartyoh@hatiolab.com",
|
|
5
|
-
"version": "10.29.
|
|
5
|
+
"version": "10.29.68",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/src/index.js",
|
|
8
8
|
"module": "dist/src/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"storybook:build": "tsc && npm run analyze -- --exclude dist && build-storybook"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@operato/styles": "^10.29.
|
|
49
|
+
"@operato/styles": "^10.29.68",
|
|
50
50
|
"@operato/utils": "^10.29.61",
|
|
51
51
|
"dayjs": "^1.11.2",
|
|
52
52
|
"lit": "^3.1.2"
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"prettier --write"
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "28edfb19074463ffa10f36bdc9a3fb899c496e8a"
|
|
88
88
|
}
|
|
@@ -236,3 +236,32 @@ describe('the view switch is a named button', () => {
|
|
|
236
236
|
expect(button!.getAttribute('aria-label')).to.equal('주간 보기')
|
|
237
237
|
})
|
|
238
238
|
})
|
|
239
|
+
|
|
240
|
+
/*
|
|
241
|
+
* A phone. The week's title is longer than the month's, and at 343px it left the controls too little room: the
|
|
242
|
+
* group of previous · today · next, a plain block, broke onto three lines. [확인함] 2026-11-05 · 375px viewport
|
|
243
|
+
*/
|
|
244
|
+
describe('the header on a phone', () => {
|
|
245
|
+
for (const mode of ['monthly', 'weekly'] as const) {
|
|
246
|
+
it(`${mode}: previous, today, next and the view switch stay on one line`, async () => {
|
|
247
|
+
const el = (await fixture(
|
|
248
|
+
html`<div style="width: 343px">
|
|
249
|
+
<ox-event-view mode=${mode} .eventProvider=${providerWithLongTitleOn(-1)}></ox-event-view>
|
|
250
|
+
</div>`
|
|
251
|
+
)) as HTMLElement
|
|
252
|
+
|
|
253
|
+
const inner = await settle(el.querySelector('ox-event-view') as OxEventView)
|
|
254
|
+
const nav = inner.renderRoot.querySelector('[nav]') as HTMLElement
|
|
255
|
+
/* previous · today · next, and the host's view switch through the slot */
|
|
256
|
+
const slot = nav.querySelector('slot') as HTMLSlotElement
|
|
257
|
+
const controls = [...Array.from(nav.children).filter(one => one !== slot), ...slot.assignedElements()]
|
|
258
|
+
const tops = controls.map(one => Math.round(one.getBoundingClientRect().top + one.getBoundingClientRect().height / 2))
|
|
259
|
+
|
|
260
|
+
expect(tops.length).to.equal(4)
|
|
261
|
+
expect(new Set(tops).size, `the controls stand on ${new Set(tops).size} lines`).to.equal(1)
|
|
262
|
+
|
|
263
|
+
const head = inner.renderRoot.querySelector('[head]') as HTMLElement
|
|
264
|
+
expect(head.scrollWidth <= head.clientWidth, 'the header is wider than the calendar').to.equal(true)
|
|
265
|
+
})
|
|
266
|
+
}
|
|
267
|
+
})
|