@internetarchive/collection-browser 3.1.1-alpha-webdev6778.6 → 3.1.1-alpha-webdev6778.8
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/dist/src/app-root.js +606 -606
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.js +140 -140
- package/dist/src/collection-facets/facet-row.js.map +1 -1
- package/dist/src/collection-facets/models.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +75 -75
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +54 -54
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.js +1 -3
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/data-source/models.js.map +1 -1
- package/dist/src/expanded-date-picker.js +52 -52
- package/dist/src/expanded-date-picker.js.map +1 -1
- package/dist/src/manage/manage-bar.js +77 -77
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/models.js.map +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.js +376 -376
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/base-tile-component.js.map +1 -1
- package/dist/src/tiles/grid/account-tile.js +36 -36
- package/dist/src/tiles/grid/account-tile.js.map +1 -1
- package/dist/src/tiles/grid/search-tile.js +42 -42
- package/dist/src/tiles/grid/search-tile.js.map +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +119 -119
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact.js +97 -97
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/utils/analytics-events.js.map +1 -1
- package/dist/src/utils/format-date.js.map +1 -1
- package/dist/test/collection-browser.test.js +187 -187
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facet-row.test.js +23 -23
- package/dist/test/collection-facets/facet-row.test.js.map +1 -1
- package/dist/test/collection-facets.test.js +20 -20
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +37 -37
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +64 -64
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +57 -57
- package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
- package/dist/test/utils/format-date.test.js.map +1 -1
- package/package.json +2 -2
- package/src/app-root.ts +1140 -1140
- package/src/collection-browser.ts +1 -1
- package/src/collection-facets/facet-row.ts +296 -296
- package/src/collection-facets/models.ts +10 -10
- package/src/collection-facets/smart-facets/smart-facet-bar.ts +437 -437
- package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +185 -185
- package/src/data-source/collection-browser-data-source-interface.ts +333 -333
- package/src/data-source/collection-browser-data-source.ts +2 -4
- package/src/data-source/models.ts +43 -43
- package/src/expanded-date-picker.ts +191 -191
- package/src/manage/manage-bar.ts +247 -247
- package/src/models.ts +870 -870
- package/src/sort-filter-bar/sort-filter-bar.ts +1283 -1283
- package/src/tiles/base-tile-component.ts +53 -53
- package/src/tiles/grid/account-tile.ts +112 -112
- package/src/tiles/grid/search-tile.ts +90 -90
- package/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -130
- package/src/tiles/list/tile-list-compact.ts +236 -236
- package/src/utils/analytics-events.ts +29 -29
- package/src/utils/format-date.ts +42 -42
- package/test/collection-browser.test.ts +2359 -2359
- package/test/collection-facets/facet-row.test.ts +375 -375
- package/test/collection-facets.test.ts +928 -928
- package/test/sort-filter-bar/sort-filter-bar.test.ts +885 -885
- package/test/tiles/grid/item-tile.test.ts +464 -464
- package/test/tiles/list/tile-list-compact.test.ts +228 -228
- package/test/utils/format-date.test.ts +39 -39
|
@@ -10,8 +10,8 @@ describe('Sort selector default buttons', async () => {
|
|
|
10
10
|
let desktopSortSelector;
|
|
11
11
|
beforeEach(async () => {
|
|
12
12
|
var _a;
|
|
13
|
-
el = await fixture(html `
|
|
14
|
-
<sort-filter-bar></sort-filter-bar>
|
|
13
|
+
el = await fixture(html `
|
|
14
|
+
<sort-filter-bar></sort-filter-bar>
|
|
15
15
|
`);
|
|
16
16
|
sortSelectorContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#sort-selector-container');
|
|
17
17
|
desktopSortSelector = sortSelectorContainer === null || sortSelectorContainer === void 0 ? void 0 : sortSelectorContainer.querySelector('#desktop-sort-selector');
|
|
@@ -357,8 +357,8 @@ describe('Sort selector default buttons', async () => {
|
|
|
357
357
|
describe('Sort direction button behavior', () => {
|
|
358
358
|
it('should disable sort direction button when sorting by relevance', async () => {
|
|
359
359
|
var _a;
|
|
360
|
-
const el = await fixture(html `
|
|
361
|
-
<sort-filter-bar> </sort-filter-bar>
|
|
360
|
+
const el = await fixture(html `
|
|
361
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
362
362
|
`);
|
|
363
363
|
el.selectedSort = 'relevance';
|
|
364
364
|
await el.updateComplete;
|
|
@@ -368,8 +368,8 @@ describe('Sort direction button behavior', () => {
|
|
|
368
368
|
});
|
|
369
369
|
it('should enable sort direction button when not sorting by relevance', async () => {
|
|
370
370
|
var _a;
|
|
371
|
-
const el = await fixture(html `
|
|
372
|
-
<sort-filter-bar> </sort-filter-bar>
|
|
371
|
+
const el = await fixture(html `
|
|
372
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
373
373
|
`);
|
|
374
374
|
el.selectedSort = 'title';
|
|
375
375
|
await el.updateComplete;
|
|
@@ -379,8 +379,8 @@ describe('Sort direction button behavior', () => {
|
|
|
379
379
|
});
|
|
380
380
|
it('should toggle sort direction when clicked', async () => {
|
|
381
381
|
var _a;
|
|
382
|
-
const el = await fixture(html `
|
|
383
|
-
<sort-filter-bar> </sort-filter-bar>
|
|
382
|
+
const el = await fixture(html `
|
|
383
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
384
384
|
`);
|
|
385
385
|
el.selectedSort = 'title';
|
|
386
386
|
el.sortDirection = 'asc';
|
|
@@ -397,8 +397,8 @@ describe('Sort direction button behavior', () => {
|
|
|
397
397
|
describe('Display mode/style buttons', () => {
|
|
398
398
|
it('should render all display mode buttons', async () => {
|
|
399
399
|
var _a, _b, _c, _d, _e;
|
|
400
|
-
const el = await fixture(html `
|
|
401
|
-
<sort-filter-bar> </sort-filter-bar>
|
|
400
|
+
const el = await fixture(html `
|
|
401
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
402
402
|
`);
|
|
403
403
|
const displayModeButtonList = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector')) === null || _b === void 0 ? void 0 : _b.querySelector('ul');
|
|
404
404
|
const gridButton = (_c = displayModeButtonList === null || displayModeButtonList === void 0 ? void 0 : displayModeButtonList.children.item(0)) === null || _c === void 0 ? void 0 : _c.querySelector('#grid-button');
|
|
@@ -410,16 +410,16 @@ describe('Display mode/style buttons', () => {
|
|
|
410
410
|
});
|
|
411
411
|
it('should not render display mode buttons when suppressed', async () => {
|
|
412
412
|
var _a;
|
|
413
|
-
const el = await fixture(html `
|
|
414
|
-
<sort-filter-bar suppressDisplayModes></sort-filter-bar>
|
|
413
|
+
const el = await fixture(html `
|
|
414
|
+
<sort-filter-bar suppressDisplayModes></sort-filter-bar>
|
|
415
415
|
`);
|
|
416
416
|
const displayModeButtonList = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#display-style-selector');
|
|
417
417
|
expect(displayModeButtonList).not.to.exist;
|
|
418
418
|
});
|
|
419
419
|
it('should active current display mode', async () => {
|
|
420
420
|
var _a, _b, _c;
|
|
421
|
-
const el = await fixture(html `
|
|
422
|
-
<sort-filter-bar> </sort-filter-bar>
|
|
421
|
+
const el = await fixture(html `
|
|
422
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
423
423
|
`);
|
|
424
424
|
el.displayMode = 'grid';
|
|
425
425
|
await el.updateComplete;
|
|
@@ -428,8 +428,8 @@ describe('Display mode/style buttons', () => {
|
|
|
428
428
|
});
|
|
429
429
|
it('should change displayMode prop to the one clicked', async () => {
|
|
430
430
|
var _a, _b, _c;
|
|
431
|
-
const el = await fixture(html `
|
|
432
|
-
<sort-filter-bar> </sort-filter-bar>
|
|
431
|
+
const el = await fixture(html `
|
|
432
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
433
433
|
`);
|
|
434
434
|
el.displayMode = 'grid';
|
|
435
435
|
await el.updateComplete;
|
|
@@ -450,8 +450,8 @@ describe('Display mode/style buttons', () => {
|
|
|
450
450
|
describe('Sort/filter bar letter behavior', () => {
|
|
451
451
|
it('sets the selected title letter when clicked', async () => {
|
|
452
452
|
var _a, _b, _c;
|
|
453
|
-
const el = await fixture(html `
|
|
454
|
-
<sort-filter-bar></sort-filter-bar>
|
|
453
|
+
const el = await fixture(html `
|
|
454
|
+
<sort-filter-bar></sort-filter-bar>
|
|
455
455
|
`);
|
|
456
456
|
el.selectedSort = 'title';
|
|
457
457
|
el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };
|
|
@@ -465,8 +465,8 @@ describe('Sort/filter bar letter behavior', () => {
|
|
|
465
465
|
});
|
|
466
466
|
it('sets the selected creator letter when clicked', async () => {
|
|
467
467
|
var _a, _b, _c;
|
|
468
|
-
const el = await fixture(html `
|
|
469
|
-
<sort-filter-bar></sort-filter-bar>
|
|
468
|
+
const el = await fixture(html `
|
|
469
|
+
<sort-filter-bar></sort-filter-bar>
|
|
470
470
|
`);
|
|
471
471
|
el.selectedSort = 'creator';
|
|
472
472
|
el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };
|
|
@@ -490,8 +490,8 @@ describe('Sort/filter bar mobile view', () => {
|
|
|
490
490
|
});
|
|
491
491
|
it('renders in mobile view', async () => {
|
|
492
492
|
var _a, _b, _c, _d;
|
|
493
|
-
const el = await fixture(html `
|
|
494
|
-
<sort-filter-bar></sort-filter-bar>
|
|
493
|
+
const el = await fixture(html `
|
|
494
|
+
<sort-filter-bar></sort-filter-bar>
|
|
495
495
|
`);
|
|
496
496
|
const mobileSortContainer = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-sort-container');
|
|
497
497
|
const desktopSortContainer = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-container');
|
|
@@ -500,8 +500,8 @@ describe('Sort/filter bar mobile view', () => {
|
|
|
500
500
|
});
|
|
501
501
|
it('changes selected sort in mobile view', async () => {
|
|
502
502
|
var _a;
|
|
503
|
-
const el = await fixture(html `
|
|
504
|
-
<sort-filter-bar></sort-filter-bar>
|
|
503
|
+
const el = await fixture(html `
|
|
504
|
+
<sort-filter-bar></sort-filter-bar>
|
|
505
505
|
`);
|
|
506
506
|
const mobileDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-dropdown');
|
|
507
507
|
expect(mobileDropdown).to.exist;
|
|
@@ -513,8 +513,8 @@ describe('Sort/filter bar mobile view', () => {
|
|
|
513
513
|
});
|
|
514
514
|
it('clears title filter when sort changed from title in mobile view', async () => {
|
|
515
515
|
var _a;
|
|
516
|
-
const el = await fixture(html `
|
|
517
|
-
<sort-filter-bar></sort-filter-bar>
|
|
516
|
+
const el = await fixture(html `
|
|
517
|
+
<sort-filter-bar></sort-filter-bar>
|
|
518
518
|
`);
|
|
519
519
|
el.selectedSort = 'title';
|
|
520
520
|
el.selectedTitleFilter = 'A';
|
|
@@ -530,8 +530,8 @@ describe('Sort/filter bar mobile view', () => {
|
|
|
530
530
|
});
|
|
531
531
|
it('clears creator filter when sort changed from creator in mobile view', async () => {
|
|
532
532
|
var _a;
|
|
533
|
-
const el = await fixture(html `
|
|
534
|
-
<sort-filter-bar></sort-filter-bar>
|
|
533
|
+
const el = await fixture(html `
|
|
534
|
+
<sort-filter-bar></sort-filter-bar>
|
|
535
535
|
`);
|
|
536
536
|
el.selectedSort = 'creator';
|
|
537
537
|
el.selectedCreatorFilter = 'A';
|
|
@@ -547,8 +547,8 @@ describe('Sort/filter bar mobile view', () => {
|
|
|
547
547
|
});
|
|
548
548
|
it('shows sort selector backdrop when mobile sort open', async () => {
|
|
549
549
|
var _a, _b, _c, _d;
|
|
550
|
-
const el = await fixture(html `
|
|
551
|
-
<sort-filter-bar></sort-filter-bar>
|
|
550
|
+
const el = await fixture(html `
|
|
551
|
+
<sort-filter-bar></sort-filter-bar>
|
|
552
552
|
`);
|
|
553
553
|
const mobileDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#mobile-dropdown');
|
|
554
554
|
expect(mobileDropdown).to.exist;
|
|
@@ -568,8 +568,8 @@ describe('Sort/filter bar mobile view', () => {
|
|
|
568
568
|
const resizeStub = new SharedResizeObserver();
|
|
569
569
|
const addSpy = sinon.spy(resizeStub, 'addObserver');
|
|
570
570
|
const removeSpy = sinon.spy(resizeStub, 'removeObserver');
|
|
571
|
-
const el = await fixture(html `
|
|
572
|
-
<sort-filter-bar .resizeObserver=${resizeStub}></sort-filter-bar>
|
|
571
|
+
const el = await fixture(html `
|
|
572
|
+
<sort-filter-bar .resizeObserver=${resizeStub}></sort-filter-bar>
|
|
573
573
|
`);
|
|
574
574
|
// this element exists
|
|
575
575
|
expect((_a = el === null || el === void 0 ? void 0 : el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#sort-selector-container')).to.exist;
|
|
@@ -585,11 +585,11 @@ describe('Sort/filter bar mobile view', () => {
|
|
|
585
585
|
const resizeStub = new SharedResizeObserver();
|
|
586
586
|
const addSpy = sinon.spy(resizeStub, 'addObserver');
|
|
587
587
|
const removeSpy = sinon.spy(resizeStub, 'removeObserver');
|
|
588
|
-
const el = await fixture(html `
|
|
589
|
-
<sort-filter-bar
|
|
590
|
-
.resizeObserver=${resizeStub}
|
|
591
|
-
.enableSortOptionsSlot=${true}
|
|
592
|
-
></sort-filter-bar>
|
|
588
|
+
const el = await fixture(html `
|
|
589
|
+
<sort-filter-bar
|
|
590
|
+
.resizeObserver=${resizeStub}
|
|
591
|
+
.enableSortOptionsSlot=${true}
|
|
592
|
+
></sort-filter-bar>
|
|
593
593
|
`);
|
|
594
594
|
await el.updateComplete;
|
|
595
595
|
// slot exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-filter-bar.test.js","sourceRoot":"","sources":["../../../test/sort-filter-bar/sort-filter-bar.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,2CAA2C,CAAC;AAEnD,QAAQ,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;IACnD,IAAI,EAAiB,CAAC;IACtB,IAAI,qBAAqD,CAAC;IAC1D,IAAI,mBAAmD,CAAC;IAExD,UAAU,CAAC,KAAK,IAAI,EAAE;;QACpB,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAErC,CAAC,CAAC;QACH,qBAAqB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAClD,0BAA0B,CAC3B,CAAC;QACF,mBAAmB,GAAG,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,aAAa,CACxD,wBAAwB,CACzB,CAAC;QAEF,EAAE,CAAC,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC/C,MAAM,EAAE,CAAC,cAAc,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACvC,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;;QAC3C,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;;QACnD,MAAM,cAAc,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACjD,2BAA2B,CAC5B,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;;QACrE,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,QAAQ,CACwB,CAAC;QACnC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAErE,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,aAAa,CACY,CAAC;QAC5B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,CAAC,UAAU;YACpB,SAAS,CAAC,WAAW;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE1E,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,SAAS;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE5E,gCAAgC;QAChC,MAAM,mBAAmB,GACvB,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;;QACtE,MAAM,sBAAsB,GAA+B;YACzD,GAAG,uBAAuB;YAC1B,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK;YACxB,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,IAAI;YAC/B,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK;YAC/B,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK;YAC/B,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK;SAC3B,CAAC;QAEF,EAAE,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;QAClD,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,QAAQ,CACwB,CAAC;QACnC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,aAAa,CACY,CAAC;QAC5B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,CAAC,UAAU;YACpB,SAAS,CAAC,WAAW;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,CAAC,aAAa;YACvB,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,SAAS;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;;QAC7F,MAAM,sBAAsB,GAA+B;YACzD,GAAG,uBAAuB;YAC1B,iDAAiD;YACjD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,KAAK;SAC9B,CAAC;QAEF,EAAE,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;QAClD,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,QAAQ,CACwB,CAAC;QACnC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAErE,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,aAAa,CACY,CAAC;QAC5B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;;QAC5F,MAAM,sBAAsB,GAA+B;YACzD,GAAG,uBAAuB;YAC1B,8CAA8C;YAC9C,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK;YACvB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK;YAC/B,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK;SAChC,CAAC;QAEF,EAAE,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;QAClD,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,QAAQ,CACwB,CAAC;QACnC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAErE,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,aAAa,CACY,CAAC;QAC5B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;;QACvF,MAAM,sBAAsB,GAA+B;YACzD,GAAG,uBAAuB;YAC1B,yBAAyB;YACzB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,KAAK;YAC7B,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,KAAK;SAC/B,CAAC;QAEF,EAAE,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;QAClD,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,QAAQ,CACwB,CAAC;QACnC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,aAAa,CACY,CAAC;QAC5B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;;QACtF,MAAM,sBAAsB,GAA+B;YACzD,GAAG,uBAAuB;YAC1B,yBAAyB;YACzB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK;YACvB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK;YAC5B,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK;YAC/B,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK;SAChC,CAAC;QAEF,EAAE,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;QAClD,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,QAAQ,CACwB,CAAC;QACnC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,gBAAgB,CAC5D,aAAa,CACY,CAAC;QAC5B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,MAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;;QAC5D,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC;QAC3C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,aAAa,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAChD,iBAAiB,CACJ,CAAC;QAChB,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,MAAA,aAAa,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;;QAC3D,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC;QAC5C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAC/C,gBAAgB,CACH,CAAC;QAChB,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,MAAA,YAAY,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;QACxD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,aAAa,CAAC,CAAC;QACjC,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;QACxD,EAAE,CAAC,YAAY,GAAG,aAA0B,CAAC;QAC7C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,mBAAmB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,aAAa,CAC5D,sBAAsB,CACvB,CAAC;QACF,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;;QACzD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;QACxD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,aAAa,CAAC,CAAC;QACjC,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;QACxD,EAAE,CAAC,YAAY,GAAG,cAA2B,CAAC;QAC9C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,mBAAmB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,aAAa,CAC5D,sBAAsB,CACvB,CAAC;QACF,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;;QAC3D,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;;QACzD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,iBAAiB,CAAgB,CAAC;QAEpD,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;;QACrD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE5B,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;;QACzD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,iBAAiB,CAAgB,CAAC;QAEpD,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;;QACvD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE5B,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;;QACzD,EAAE,CAAC,qBAAqB,GAAG;YACzB,GAAG,EAAE,CAAC,qBAAqB;YAC3B,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI;SAC5B,CAAC;QACF,EAAE,CAAC,YAAY,GAAG,OAAoB,CAAC;QACvC,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE5B,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;;QACpE,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,iBAAiB,CAAgB,CAAC;QAEpD,EAAE,CAAC,YAAY,GAAG,WAAwB,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAE/C,EAAE,CAAC,YAAY,GAAG,WAAwB,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9D,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;;QACpE,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,iBAAiB,CAAgB,CAAC;QAEpD,EAAE,CAAC,YAAY,GAAG,WAAwB,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzC,EAAE,CAAC,YAAY,GAAG,WAAwB,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9D,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,aAAa,CAAe,CAAC;QAE/C,MAAM,WAAW,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,0CAAE,aAAa,CAChE,aAAa,CACO,CAAC;QACvB,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE7B,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,aAAa,CAAe,CAAC;QAE/C,MAAM,WAAW,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,0CAAE,aAAa,CAChE,aAAa,CACO,CAAC;QACvB,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE7B,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;;QACrE,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,aAAa,CAAe,CAAC;QAE/C,MAAM,KAAK,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,0CAAE,aAAa,CAC1D,QAAQ,CACM,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEvB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,IAAI,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACzC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACrC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;;QACrE,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,aAAa,CAAe,CAAC;QAE/C,MAAM,KAAK,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,0CAAE,aAAa,CAC1D,QAAQ,CACM,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEvB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,IAAI,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACzC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACrC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;;QACrD,MAAM,mBAAmB,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,aAAa,CAAe,CAAC;QAE/C,MAAM,KAAK,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,0CAAE,aAAa,CAC1D,QAAQ,CACM,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEvB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,IAAI,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACzC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACrC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;;QAC9E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,WAAwB,CAAC;QAC3C,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,mBAAmB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACtD,0BAA0B,CACN,CAAC;QACvB,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACrC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;;QACjF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,OAAoB,CAAC;QACvC,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,mBAAmB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACtD,0BAA0B,CACN,CAAC;QACvB,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACrC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;;QACzD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,OAAoB,CAAC;QACvC,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC;QACzB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,mBAAmB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACtD,0BAA0B,CACN,CAAC;QAEvB,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1C,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;;QACtD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,MAAM,qBAAqB,GAAG,MAAA,MAAA,EAAE,CAAC,UAAU,0CACvC,aAAa,CAAC,yBAAyB,CAAC,0CACxC,aAAa,CAAC,IAAI,CAAC,CAAC;QAExB,MAAM,UAAU,GAAG,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,CAC/C,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,cAAc,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE5B,MAAM,gBAAgB,GAAG,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,CACrD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAElC,MAAM,iBAAiB,GAAG,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,CACtD,IAAI,CAAC,CAAC,CAAC,0CACN,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC1C,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;;QACtE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,MAAM,qBAAqB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACxD,yBAAyB,CAC1B,CAAC;QACF,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;;QAClD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC;QACxB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,gBAAgB,GAAG,MAAA,MAAA,MAAA,EAAE,CAAC,UAAU,0CAClC,aAAa,CAAC,yBAAyB,CAAC,0CACxC,aAAa,CAAC,eAAe,CAAC,0CAC9B,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;;QACjE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC;QACxB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,kBAAkB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACrD,qBAAqB,CACP,CAAC;QACjB,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,iBAAiB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACpD,sBAAsB,CACR,CAAC;QACjB,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,cAAc,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACjD,cAAc,CACA,CAAC;QACjB,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;;QAC3D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,OAAoB,CAAC;QACvC,EAAE,CAAC,oBAAoB,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC3D,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,0CAAE,aAAa,CACpD,4BAA4B,CACR,CAAC;QACvB,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,EAAE,CAAC;QACpB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;;QAC7D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,SAAsB,CAAC;QACzC,EAAE,CAAC,oBAAoB,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3D,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,0CAAE,aAAa,CACpD,4BAA4B,CACR,CAAC;QACvB,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,EAAE,CAAC;QACpB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,cAAiD,CAAC;IACtD,MAAM,CAAC,GAAG,EAAE;QACV,cAAc,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;;QACtC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACtD,wBAAwB,CACzB,CAAC;QACF,MAAM,oBAAoB,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACvD,yBAAyB,CAC1B,CAAC;QAEF,MAAM,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,SAAS,0CAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,MAAM,CAAC,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,SAAS,0CAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;;QACpD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACjD,kBAAkB,CACL,CAAC;QAChB,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEhC,cAAc,CAAC,cAAc,GAAG,OAAO,CAAC;QACxC,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QAC/B,cAAc,CAAC,aAAa,CAC1B,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAC1D,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;;QAC/E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,OAAoB,CAAC;QACvC,EAAE,CAAC,mBAAmB,GAAG,GAAG,CAAC;QAC7B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,cAAc,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACjD,kBAAkB,CACL,CAAC;QAChB,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEhC,cAAc,CAAC,cAAc,GAAG,WAAW,CAAC;QAC5C,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;QACnC,cAAc,CAAC,aAAa,CAC1B,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAC1D,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;;QACnF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,SAAsB,CAAC;QACzC,EAAE,CAAC,qBAAqB,GAAG,GAAG,CAAC;QAC/B,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,cAAc,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACjD,kBAAkB,CACL,CAAC;QAChB,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEhC,cAAc,CAAC,cAAc,GAAG,WAAW,CAAC;QAC5C,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;QACnC,cAAc,CAAC,aAAa,CAC1B,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAC1D,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;;QAClE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;KAE3C,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACjD,kBAAkB,CACL,CAAC;QAChB,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEhC,MAAM,KAAK,GAAG,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,UAAU,0CAAE,aAAa,CACrD,QAAQ,CACM,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEvB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,IAAI,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACzC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CACrC,yBAAyB,CACX,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;QACxD,MAAM,UAAU,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAE1D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;yCACP,UAAU;KAC9C,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,CAAC,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,UAAU,0CAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE3E,wDAAwD;QACxD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,WAAW,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC/C,EAAE,CAAC,cAAc,GAAG,WAAW,CAAC;QAChC,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;;QACvD,MAAM,UAAU,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAE1D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAgB,IAAI,CAAA;;0BAEtB,UAAU;iCACH,IAAI;;KAEhC,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,cAAc;QACd,MAAM,eAAe,GAAG,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,UAAU,0CAAE,aAAa,CACnD,2BAA2B,CAC5B,CAAC;QACF,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEjC,0BAA0B;QAC1B,MAAM,CAAC,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,UAAU,0CAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;aACrE,KAAK,CAAC;QAET,MAAM,WAAW,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC/C,EAAE,CAAC,cAAc,GAAG,WAAW,CAAC;QAChC,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,sCAAsC;QACtC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\r\nimport sinon from 'sinon';\r\nimport { html } from 'lit';\r\nimport type { IaDropdown } from '@internetarchive/ia-dropdown';\r\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\r\nimport type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';\r\nimport { SortField, defaultSortAvailability } from '../../src/models';\r\n\r\nimport '../../src/sort-filter-bar/sort-filter-bar';\r\n\r\ndescribe('Sort selector default buttons', async () => {\r\n let el: SortFilterBar;\r\n let sortSelectorContainer: HTMLElement | null | undefined;\r\n let desktopSortSelector: HTMLElement | null | undefined;\r\n\r\n beforeEach(async () => {\r\n el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n sortSelectorContainer = el.shadowRoot?.querySelector(\r\n '#sort-selector-container',\r\n );\r\n desktopSortSelector = sortSelectorContainer?.querySelector(\r\n '#desktop-sort-selector',\r\n );\r\n\r\n el.resizeObserver = new SharedResizeObserver();\r\n await el.updateComplete;\r\n });\r\n\r\n it('should render basic component', async () => {\r\n expect(sortSelectorContainer).to.exist;\r\n expect(desktopSortSelector).to.exist;\r\n });\r\n\r\n it('should render sort-by label', async () => {\r\n const sortByLabel = el.shadowRoot?.querySelector('.sort-by-text');\r\n expect(sortByLabel).to.exist;\r\n expect(sortByLabel?.textContent?.trim()).to.equal('Sort by:');\r\n });\r\n\r\n it('should render sort direction button', async () => {\r\n const sortDirections = el.shadowRoot?.querySelector(\r\n '.sort-direction-container',\r\n );\r\n expect(sortDirections).to.exist;\r\n expect(sortDirections?.querySelector('.sort-direction-icon')).to.exist;\r\n });\r\n\r\n it('renders default set of sort options if not overridden', async () => {\r\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\r\n 'button',\r\n ) as NodeListOf<HTMLButtonElement>;\r\n expect(allSortSelectors).to.exist;\r\n expect(allSortSelectors.length).to.equal(3);\r\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\r\n expect(allSortSelectors[1]?.textContent?.trim()).to.equal('Title');\r\n expect(allSortSelectors[2]?.textContent?.trim()).to.equal('Creator');\r\n\r\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\r\n 'ia-dropdown',\r\n ) as NodeListOf<IaDropdown>;\r\n expect(allSortDropdowns).to.exist;\r\n expect(allSortDropdowns.length).to.equal(2);\r\n\r\n expect(allSortDropdowns[0]?.options.length).to.equal(2);\r\n expect(allSortDropdowns[0]?.options.map(o => o.id)).to.deep.equal([\r\n SortField.weeklyview,\r\n SortField.alltimeview,\r\n ]);\r\n expect(allSortDropdowns[0]?.textContent?.trim()).to.equal('Weekly views');\r\n\r\n expect(allSortDropdowns[1]?.options.length).to.equal(4);\r\n expect(allSortDropdowns[1]?.options.map(o => o.id)).to.deep.equal([\r\n SortField.date,\r\n SortField.datearchived,\r\n SortField.datereviewed,\r\n SortField.dateadded,\r\n ]);\r\n expect(allSortDropdowns[1]?.textContent?.trim()).to.equal('Date published');\r\n\r\n // Relevance selected by default\r\n const defaultSortSelector =\r\n desktopSortSelector?.querySelector('button.selected');\r\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Relevance');\r\n });\r\n\r\n it('renders an overridden set of sort options if specified', async () => {\r\n const customSortAvailability: Record<SortField, boolean> = {\r\n ...defaultSortAvailability,\r\n [SortField.title]: false,\r\n [SortField.datefavorited]: true,\r\n [SortField.datearchived]: false,\r\n [SortField.datereviewed]: false,\r\n [SortField.creator]: false,\r\n };\r\n\r\n el.sortFieldAvailability = customSortAvailability;\r\n await el.updateComplete;\r\n\r\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\r\n 'button',\r\n ) as NodeListOf<HTMLButtonElement>;\r\n expect(allSortSelectors).to.exist;\r\n expect(allSortSelectors.length).to.equal(1);\r\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\r\n\r\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\r\n 'ia-dropdown',\r\n ) as NodeListOf<IaDropdown>;\r\n expect(allSortDropdowns).to.exist;\r\n expect(allSortDropdowns.length).to.equal(2);\r\n\r\n expect(allSortDropdowns[0]?.options.length).to.equal(2);\r\n expect(allSortDropdowns[0]?.options.map(o => o.id)).to.deep.equal([\r\n SortField.weeklyview,\r\n SortField.alltimeview,\r\n ]);\r\n\r\n expect(allSortDropdowns[1]?.options.length).to.equal(3);\r\n expect(allSortDropdowns[1]?.options.map(o => o.id)).to.deep.equal([\r\n SortField.datefavorited,\r\n SortField.date,\r\n SortField.dateadded,\r\n ]);\r\n });\r\n\r\n it('renders a views button instead of a dropdown if it would only have one option', async () => {\r\n const customSortAvailability: Record<SortField, boolean> = {\r\n ...defaultSortAvailability,\r\n // Disable weekly views (but keep All-time Views)\r\n [SortField.weeklyview]: false,\r\n };\r\n\r\n el.sortFieldAvailability = customSortAvailability;\r\n await el.updateComplete;\r\n\r\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\r\n 'button',\r\n ) as NodeListOf<HTMLButtonElement>;\r\n expect(allSortSelectors).to.exist;\r\n expect(allSortSelectors.length).to.equal(4);\r\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\r\n expect(allSortSelectors[1]?.textContent?.trim()).to.equal('All-time views');\r\n expect(allSortSelectors[2]?.textContent?.trim()).to.equal('Title');\r\n expect(allSortSelectors[3]?.textContent?.trim()).to.equal('Creator');\r\n\r\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\r\n 'ia-dropdown',\r\n ) as NodeListOf<IaDropdown>;\r\n expect(allSortDropdowns).to.exist;\r\n expect(allSortDropdowns.length).to.equal(1);\r\n });\r\n\r\n it('renders a date button instead of a dropdown if it would only have one option', async () => {\r\n const customSortAvailability: Record<SortField, boolean> = {\r\n ...defaultSortAvailability,\r\n // Disable all default dates except Date Added\r\n [SortField.date]: false,\r\n [SortField.datearchived]: false,\r\n [SortField.datereviewed]: false,\r\n };\r\n\r\n el.sortFieldAvailability = customSortAvailability;\r\n await el.updateComplete;\r\n\r\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\r\n 'button',\r\n ) as NodeListOf<HTMLButtonElement>;\r\n expect(allSortSelectors).to.exist;\r\n expect(allSortSelectors.length).to.equal(4);\r\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\r\n expect(allSortSelectors[1]?.textContent?.trim()).to.equal('Title');\r\n expect(allSortSelectors[2]?.textContent?.trim()).to.equal('Date added');\r\n expect(allSortSelectors[3]?.textContent?.trim()).to.equal('Creator');\r\n\r\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\r\n 'ia-dropdown',\r\n ) as NodeListOf<IaDropdown>;\r\n expect(allSortDropdowns).to.exist;\r\n expect(allSortDropdowns.length).to.equal(1);\r\n });\r\n\r\n it('does not render a views dropdown that would have zero available options', async () => {\r\n const customSortAvailability: Record<SortField, boolean> = {\r\n ...defaultSortAvailability,\r\n // Disable all view sorts\r\n [SortField.weeklyview]: false,\r\n [SortField.alltimeview]: false,\r\n };\r\n\r\n el.sortFieldAvailability = customSortAvailability;\r\n await el.updateComplete;\r\n\r\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\r\n 'button',\r\n ) as NodeListOf<HTMLButtonElement>;\r\n expect(allSortSelectors).to.exist;\r\n expect(allSortSelectors.length).to.equal(3);\r\n\r\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\r\n 'ia-dropdown',\r\n ) as NodeListOf<IaDropdown>;\r\n expect(allSortDropdowns).to.exist;\r\n expect(allSortDropdowns.length).to.equal(1);\r\n expect(allSortDropdowns[0].options?.[0]?.id).to.equal(SortField.date);\r\n });\r\n\r\n it('does not render a date dropdown that would have zero available options', async () => {\r\n const customSortAvailability: Record<SortField, boolean> = {\r\n ...defaultSortAvailability,\r\n // Disable all date sorts\r\n [SortField.date]: false,\r\n [SortField.dateadded]: false,\r\n [SortField.datearchived]: false,\r\n [SortField.datereviewed]: false,\r\n };\r\n\r\n el.sortFieldAvailability = customSortAvailability;\r\n await el.updateComplete;\r\n\r\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\r\n 'button',\r\n ) as NodeListOf<HTMLButtonElement>;\r\n expect(allSortSelectors).to.exist;\r\n expect(allSortSelectors.length).to.equal(3);\r\n\r\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\r\n 'ia-dropdown',\r\n ) as NodeListOf<IaDropdown>;\r\n expect(allSortDropdowns).to.exist;\r\n expect(allSortDropdowns.length).to.equal(1);\r\n expect(allSortDropdowns[0].options?.[0]?.id).to.equal(SortField.weeklyview);\r\n });\r\n\r\n it('allows changing the default views sort shown', async () => {\r\n el.defaultViewSort = SortField.alltimeview;\r\n await el.updateComplete;\r\n\r\n const viewsDropdown = el.shadowRoot?.querySelector(\r\n '#views-dropdown',\r\n ) as IaDropdown;\r\n expect(viewsDropdown).to.exist;\r\n expect(viewsDropdown.textContent?.trim()).to.equal('All-time views');\r\n });\r\n\r\n it('allows changing the default date sort shown', async () => {\r\n el.defaultDateSort = SortField.datereviewed;\r\n await el.updateComplete;\r\n\r\n const dateDropdown = el.shadowRoot?.querySelector(\r\n '#date-dropdown',\r\n ) as IaDropdown;\r\n expect(dateDropdown).to.exist;\r\n expect(dateDropdown.textContent?.trim()).to.equal('Date reviewed');\r\n });\r\n\r\n it('should render default view-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(1)\r\n ?.querySelector('ia-dropdown');\r\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Weekly views');\r\n });\r\n\r\n it('should render active view-sort selectors', async () => {\r\n el.selectedSort = 'alltimeview' as SortField;\r\n await el.updateComplete;\r\n\r\n const defaultSortSelector = desktopSortSelector?.querySelector(\r\n 'ia-dropdown.selected',\r\n );\r\n expect(defaultSortSelector?.textContent?.trim()).to.equal('All-time views');\r\n });\r\n\r\n it('should render default title-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(2)\r\n ?.querySelector('button');\r\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Title');\r\n });\r\n\r\n it('should render default date-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(3)\r\n ?.querySelector('ia-dropdown');\r\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Date published');\r\n });\r\n\r\n it('should render active date-sort selectors', async () => {\r\n el.selectedSort = 'datereviewed' as SortField;\r\n await el.updateComplete;\r\n\r\n const defaultSortSelector = desktopSortSelector?.querySelector(\r\n 'ia-dropdown.selected',\r\n );\r\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Date reviewed');\r\n });\r\n\r\n it('should render default creator-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(4)\r\n ?.querySelector('button');\r\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Creator');\r\n });\r\n\r\n it('handles click event on view-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(1)\r\n ?.querySelector('.dropdown-label') as HTMLElement;\r\n\r\n defaultSortSelector?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('weeklyview');\r\n });\r\n\r\n it('handles click event on title selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(2)\r\n ?.querySelector('button');\r\n\r\n defaultSortSelector?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('title');\r\n });\r\n\r\n it('handles click event on date-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(3)\r\n ?.querySelector('.dropdown-label') as HTMLElement;\r\n\r\n defaultSortSelector?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('date');\r\n });\r\n\r\n it('handles click event on creator selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(4)\r\n ?.querySelector('button');\r\n\r\n defaultSortSelector?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('creator');\r\n });\r\n\r\n it('handles click event on relevance selector', async () => {\r\n el.sortFieldAvailability = {\r\n ...el.sortFieldAvailability,\r\n [SortField.relevance]: true,\r\n };\r\n el.selectedSort = 'title' as SortField;\r\n await el.updateComplete;\r\n\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(0)\r\n ?.querySelector('button');\r\n\r\n defaultSortSelector?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('relevance');\r\n });\r\n\r\n it('handles return/space key event on view-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(1)\r\n ?.querySelector('.dropdown-label') as HTMLElement;\r\n\r\n el.selectedSort = 'relevance' as SortField;\r\n const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });\r\n defaultSortSelector?.dispatchEvent(enterEvent);\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('weeklyview');\r\n\r\n el.selectedSort = 'relevance' as SortField;\r\n const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });\r\n defaultSortSelector?.dispatchEvent(spaceEvent);\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('weeklyview');\r\n });\r\n\r\n it('handles return/space key event on date-sort selector', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(3)\r\n ?.querySelector('.dropdown-label') as HTMLElement;\r\n\r\n el.selectedSort = 'relevance' as SortField;\r\n const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });\r\n defaultSortSelector?.dispatchEvent(enterEvent);\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('date');\r\n\r\n el.selectedSort = 'relevance' as SortField;\r\n const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });\r\n defaultSortSelector?.dispatchEvent(spaceEvent);\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('date');\r\n });\r\n\r\n it('handles click event on view-sort dropdown option', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(1)\r\n ?.querySelector('ia-dropdown') as IaDropdown;\r\n\r\n const firstOption = defaultSortSelector?.shadowRoot?.querySelector(\r\n 'li > button',\r\n ) as HTMLButtonElement;\r\n expect(firstOption).to.exist;\r\n\r\n firstOption?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('weeklyview');\r\n });\r\n\r\n it('handles click event on date-sort dropdown option', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(3)\r\n ?.querySelector('ia-dropdown') as IaDropdown;\r\n\r\n const firstOption = defaultSortSelector?.shadowRoot?.querySelector(\r\n 'li > button',\r\n ) as HTMLButtonElement;\r\n expect(firstOption).to.exist;\r\n\r\n firstOption?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('date');\r\n });\r\n\r\n it('shows view sort selector backdrop when view sort open', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(1)\r\n ?.querySelector('ia-dropdown') as IaDropdown;\r\n\r\n const caret = defaultSortSelector?.shadowRoot?.querySelector(\r\n '.caret',\r\n ) as HTMLElement;\r\n expect(caret).to.exist;\r\n\r\n caret?.click();\r\n await el.updateComplete;\r\n\r\n let backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).to.exist;\r\n\r\n backdrop?.click();\r\n await el.updateComplete;\r\n\r\n backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).not.to.exist;\r\n });\r\n\r\n it('shows date sort selector backdrop when date sort open', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(3)\r\n ?.querySelector('ia-dropdown') as IaDropdown;\r\n\r\n const caret = defaultSortSelector?.shadowRoot?.querySelector(\r\n '.caret',\r\n ) as HTMLElement;\r\n expect(caret).to.exist;\r\n\r\n caret?.click();\r\n await el.updateComplete;\r\n\r\n let backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).to.exist;\r\n\r\n backdrop?.click();\r\n await el.updateComplete;\r\n\r\n backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).not.to.exist;\r\n });\r\n\r\n it('closes dropdown by hitting escape key', async () => {\r\n const defaultSortSelector = desktopSortSelector?.children\r\n .item(3)\r\n ?.querySelector('ia-dropdown') as IaDropdown;\r\n\r\n const caret = defaultSortSelector?.shadowRoot?.querySelector(\r\n '.caret',\r\n ) as HTMLElement;\r\n expect(caret).to.exist;\r\n\r\n caret?.click();\r\n await el.updateComplete;\r\n\r\n let backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).to.exist;\r\n\r\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));\r\n await el.updateComplete;\r\n\r\n backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).not.to.exist;\r\n });\r\n});\r\n\r\ndescribe('Sort direction button behavior', () => {\r\n it('should disable sort direction button when sorting by relevance', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'relevance' as SortField;\r\n await el.updateComplete;\r\n\r\n const sortDirectionButton = el.shadowRoot?.querySelector(\r\n '.sort-direction-selector',\r\n ) as HTMLButtonElement;\r\n expect(sortDirectionButton).to.exist;\r\n expect(sortDirectionButton.disabled).to.be.true;\r\n });\r\n\r\n it('should enable sort direction button when not sorting by relevance', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'title' as SortField;\r\n await el.updateComplete;\r\n\r\n const sortDirectionButton = el.shadowRoot?.querySelector(\r\n '.sort-direction-selector',\r\n ) as HTMLButtonElement;\r\n expect(sortDirectionButton).to.exist;\r\n expect(sortDirectionButton.disabled).to.be.false;\r\n });\r\n\r\n it('should toggle sort direction when clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'title' as SortField;\r\n el.sortDirection = 'asc';\r\n await el.updateComplete;\r\n\r\n const sortDirectionButton = el.shadowRoot?.querySelector(\r\n '.sort-direction-selector',\r\n ) as HTMLButtonElement;\r\n\r\n sortDirectionButton.click();\r\n await el.updateComplete;\r\n expect(el.sortDirection).to.equal('desc');\r\n\r\n sortDirectionButton.click();\r\n await el.updateComplete;\r\n expect(el.sortDirection).to.equal('asc');\r\n });\r\n});\r\n\r\ndescribe('Display mode/style buttons', () => {\r\n it('should render all display mode buttons', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n const displayModeButtonList = el.shadowRoot\r\n ?.querySelector('#display-style-selector')\r\n ?.querySelector('ul');\r\n\r\n const gridButton = displayModeButtonList?.children\r\n .item(0)\r\n ?.querySelector('#grid-button');\r\n expect(gridButton).to.exist;\r\n\r\n const detailListButton = displayModeButtonList?.children\r\n .item(1)\r\n ?.querySelector('#list-detail-button');\r\n expect(detailListButton).to.exist;\r\n\r\n const compactListButton = displayModeButtonList?.children\r\n .item(2)\r\n ?.querySelector('#list-compact-button');\r\n expect(compactListButton).to.exist;\r\n });\r\n\r\n it('should not render display mode buttons when suppressed', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar suppressDisplayModes></sort-filter-bar>\r\n `);\r\n\r\n const displayModeButtonList = el.shadowRoot?.querySelector(\r\n '#display-style-selector',\r\n );\r\n expect(displayModeButtonList).not.to.exist;\r\n });\r\n\r\n it('should active current display mode', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.displayMode = 'grid';\r\n await el.updateComplete;\r\n\r\n const displayModeTitle = el.shadowRoot\r\n ?.querySelector('#display-style-selector')\r\n ?.querySelector('button.active')\r\n ?.getAttribute('title');\r\n expect(displayModeTitle).to.equal('Tile view');\r\n });\r\n\r\n it('should change displayMode prop to the one clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar> </sort-filter-bar>\r\n `);\r\n\r\n el.displayMode = 'grid';\r\n await el.updateComplete;\r\n\r\n const extendedListButton = el.shadowRoot?.querySelector(\r\n '#list-detail-button',\r\n ) as HTMLElement;\r\n extendedListButton.click();\r\n await el.updateComplete;\r\n expect(el.displayMode).to.equal('list-detail');\r\n\r\n const compactListButton = el.shadowRoot?.querySelector(\r\n '#list-compact-button',\r\n ) as HTMLElement;\r\n compactListButton.click();\r\n await el.updateComplete;\r\n expect(el.displayMode).to.equal('list-compact');\r\n\r\n const gridModeButton = el.shadowRoot?.querySelector(\r\n '#grid-button',\r\n ) as HTMLElement;\r\n gridModeButton.click();\r\n await el.updateComplete;\r\n expect(el.displayMode).to.equal('grid');\r\n });\r\n});\r\n\r\ndescribe('Sort/filter bar letter behavior', () => {\r\n it('sets the selected title letter when clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'title' as SortField;\r\n el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };\r\n await el.updateComplete;\r\n\r\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\r\n const letterLink = alphaBar?.shadowRoot?.querySelector(\r\n 'li > button:not(:disabled)',\r\n ) as HTMLAnchorElement;\r\n expect(letterLink?.textContent?.trim()).to.equal('T');\r\n\r\n letterLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedTitleFilter).to.equal('T');\r\n });\r\n\r\n it('sets the selected creator letter when clicked', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'creator' as SortField;\r\n el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };\r\n await el.updateComplete;\r\n\r\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\r\n const letterLink = alphaBar?.shadowRoot?.querySelector(\r\n 'li > button:not(:disabled)',\r\n ) as HTMLAnchorElement;\r\n expect(letterLink?.textContent?.trim()).to.equal('C');\r\n\r\n letterLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(el.selectedCreatorFilter).to.equal('C');\r\n });\r\n});\r\n\r\ndescribe('Sort/filter bar mobile view', () => {\r\n let origWindowSize: { width: number; height: number };\r\n before(() => {\r\n origWindowSize = { width: window.innerWidth, height: window.innerHeight };\r\n window.resizeTo(500, 600);\r\n });\r\n\r\n after(() => {\r\n window.resizeTo(origWindowSize.width, origWindowSize.height);\r\n });\r\n\r\n it('renders in mobile view', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n const mobileSortContainer = el.shadowRoot?.querySelector(\r\n '#mobile-sort-container',\r\n );\r\n const desktopSortContainer = el.shadowRoot?.querySelector(\r\n '#desktop-sort-container',\r\n );\r\n\r\n expect(mobileSortContainer?.classList?.contains('visible')).to.be.true;\r\n expect(desktopSortContainer?.classList?.contains('hidden')).to.be.true;\r\n });\r\n\r\n it('changes selected sort in mobile view', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n const mobileDropdown = el.shadowRoot?.querySelector(\r\n '#mobile-dropdown',\r\n ) as IaDropdown;\r\n expect(mobileDropdown).to.exist;\r\n\r\n mobileDropdown.selectedOption = 'title';\r\n const option = { id: 'title' };\r\n mobileDropdown.dispatchEvent(\r\n new CustomEvent('optionSelected', { detail: { option } }),\r\n );\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('title');\r\n });\r\n\r\n it('clears title filter when sort changed from title in mobile view', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'title' as SortField;\r\n el.selectedTitleFilter = 'A';\r\n await el.updateComplete;\r\n\r\n const mobileDropdown = el.shadowRoot?.querySelector(\r\n '#mobile-dropdown',\r\n ) as IaDropdown;\r\n expect(mobileDropdown).to.exist;\r\n\r\n mobileDropdown.selectedOption = 'relevance';\r\n const option = { id: 'relevance' };\r\n mobileDropdown.dispatchEvent(\r\n new CustomEvent('optionSelected', { detail: { option } }),\r\n );\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('relevance');\r\n expect(el.selectedTitleFilter).to.be.null;\r\n });\r\n\r\n it('clears creator filter when sort changed from creator in mobile view', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n el.selectedSort = 'creator' as SortField;\r\n el.selectedCreatorFilter = 'A';\r\n await el.updateComplete;\r\n\r\n const mobileDropdown = el.shadowRoot?.querySelector(\r\n '#mobile-dropdown',\r\n ) as IaDropdown;\r\n expect(mobileDropdown).to.exist;\r\n\r\n mobileDropdown.selectedOption = 'relevance';\r\n const option = { id: 'relevance' };\r\n mobileDropdown.dispatchEvent(\r\n new CustomEvent('optionSelected', { detail: { option } }),\r\n );\r\n await el.updateComplete;\r\n\r\n expect(el.selectedSort).to.equal('relevance');\r\n expect(el.selectedCreatorFilter).to.be.null;\r\n });\r\n\r\n it('shows sort selector backdrop when mobile sort open', async () => {\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar></sort-filter-bar>\r\n `);\r\n\r\n const mobileDropdown = el.shadowRoot?.querySelector(\r\n '#mobile-dropdown',\r\n ) as IaDropdown;\r\n expect(mobileDropdown).to.exist;\r\n\r\n const caret = mobileDropdown?.shadowRoot?.querySelector(\r\n '.caret',\r\n ) as HTMLElement;\r\n expect(caret).to.exist;\r\n\r\n caret?.click();\r\n await el.updateComplete;\r\n\r\n let backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).to.exist;\r\n\r\n backdrop?.click();\r\n await el.updateComplete;\r\n\r\n backdrop = el.shadowRoot?.querySelector(\r\n '#sort-selector-backdrop',\r\n ) as HTMLElement;\r\n expect(backdrop).not.to.exist;\r\n });\r\n\r\n it('shows loansTab top-bar slot Default View', async () => {\r\n const resizeStub = new SharedResizeObserver();\r\n const addSpy = sinon.spy(resizeStub, 'addObserver');\r\n const removeSpy = sinon.spy(resizeStub, 'removeObserver');\r\n\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar .resizeObserver=${resizeStub}></sort-filter-bar>\r\n `);\r\n\r\n // this element exists\r\n expect(el?.shadowRoot?.querySelector('#sort-selector-container')).to.exist;\r\n\r\n // loads & unloads twice when [re]setting ResizeObserver\r\n expect(addSpy.callCount).to.equal(2);\r\n\r\n const resizeStub2 = new SharedResizeObserver();\r\n el.resizeObserver = resizeStub2;\r\n await el.updateComplete;\r\n expect(removeSpy.callCount).to.equal(2);\r\n });\r\n\r\n it('contains sort-options slot when enabled', async () => {\r\n const resizeStub = new SharedResizeObserver();\r\n const addSpy = sinon.spy(resizeStub, 'addObserver');\r\n const removeSpy = sinon.spy(resizeStub, 'removeObserver');\r\n\r\n const el = await fixture<SortFilterBar>(html`\r\n <sort-filter-bar\r\n .resizeObserver=${resizeStub}\r\n .enableSortOptionsSlot=${true}\r\n ></sort-filter-bar>\r\n `);\r\n\r\n await el.updateComplete;\r\n\r\n // slot exists\r\n const sortOptionsSlot = el?.shadowRoot?.querySelector(\r\n 'slot[name=\"sort-options\"]',\r\n );\r\n expect(sortOptionsSlot).to.exist;\r\n\r\n // sort bar does not exist\r\n expect(el?.shadowRoot?.querySelector('#sort-selector-container')).to.not\r\n .exist;\r\n\r\n const resizeStub2 = new SharedResizeObserver();\r\n el.resizeObserver = resizeStub2;\r\n await el.updateComplete;\r\n\r\n // there's no need for resize observer\r\n expect(addSpy.callCount).to.equal(0);\r\n expect(removeSpy.callCount).to.equal(0);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"sort-filter-bar.test.js","sourceRoot":"","sources":["../../../test/sort-filter-bar/sort-filter-bar.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { IaDropdown } from '@internetarchive/ia-dropdown';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';\nimport { SortField, defaultSortAvailability } from '../../src/models';\n\nimport '../../src/sort-filter-bar/sort-filter-bar';\n\ndescribe('Sort selector default buttons', async () => {\n let el: SortFilterBar;\n let sortSelectorContainer: HTMLElement | null | undefined;\n let desktopSortSelector: HTMLElement | null | undefined;\n\n beforeEach(async () => {\n el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n sortSelectorContainer = el.shadowRoot?.querySelector(\n '#sort-selector-container',\n );\n desktopSortSelector = sortSelectorContainer?.querySelector(\n '#desktop-sort-selector',\n );\n\n el.resizeObserver = new SharedResizeObserver();\n await el.updateComplete;\n });\n\n it('should render basic component', async () => {\n expect(sortSelectorContainer).to.exist;\n expect(desktopSortSelector).to.exist;\n });\n\n it('should render sort-by label', async () => {\n const sortByLabel = el.shadowRoot?.querySelector('.sort-by-text');\n expect(sortByLabel).to.exist;\n expect(sortByLabel?.textContent?.trim()).to.equal('Sort by:');\n });\n\n it('should render sort direction button', async () => {\n const sortDirections = el.shadowRoot?.querySelector(\n '.sort-direction-container',\n );\n expect(sortDirections).to.exist;\n expect(sortDirections?.querySelector('.sort-direction-icon')).to.exist;\n });\n\n it('renders default set of sort options if not overridden', async () => {\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\n 'button',\n ) as NodeListOf<HTMLButtonElement>;\n expect(allSortSelectors).to.exist;\n expect(allSortSelectors.length).to.equal(3);\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\n expect(allSortSelectors[1]?.textContent?.trim()).to.equal('Title');\n expect(allSortSelectors[2]?.textContent?.trim()).to.equal('Creator');\n\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\n 'ia-dropdown',\n ) as NodeListOf<IaDropdown>;\n expect(allSortDropdowns).to.exist;\n expect(allSortDropdowns.length).to.equal(2);\n\n expect(allSortDropdowns[0]?.options.length).to.equal(2);\n expect(allSortDropdowns[0]?.options.map(o => o.id)).to.deep.equal([\n SortField.weeklyview,\n SortField.alltimeview,\n ]);\n expect(allSortDropdowns[0]?.textContent?.trim()).to.equal('Weekly views');\n\n expect(allSortDropdowns[1]?.options.length).to.equal(4);\n expect(allSortDropdowns[1]?.options.map(o => o.id)).to.deep.equal([\n SortField.date,\n SortField.datearchived,\n SortField.datereviewed,\n SortField.dateadded,\n ]);\n expect(allSortDropdowns[1]?.textContent?.trim()).to.equal('Date published');\n\n // Relevance selected by default\n const defaultSortSelector =\n desktopSortSelector?.querySelector('button.selected');\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Relevance');\n });\n\n it('renders an overridden set of sort options if specified', async () => {\n const customSortAvailability: Record<SortField, boolean> = {\n ...defaultSortAvailability,\n [SortField.title]: false,\n [SortField.datefavorited]: true,\n [SortField.datearchived]: false,\n [SortField.datereviewed]: false,\n [SortField.creator]: false,\n };\n\n el.sortFieldAvailability = customSortAvailability;\n await el.updateComplete;\n\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\n 'button',\n ) as NodeListOf<HTMLButtonElement>;\n expect(allSortSelectors).to.exist;\n expect(allSortSelectors.length).to.equal(1);\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\n\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\n 'ia-dropdown',\n ) as NodeListOf<IaDropdown>;\n expect(allSortDropdowns).to.exist;\n expect(allSortDropdowns.length).to.equal(2);\n\n expect(allSortDropdowns[0]?.options.length).to.equal(2);\n expect(allSortDropdowns[0]?.options.map(o => o.id)).to.deep.equal([\n SortField.weeklyview,\n SortField.alltimeview,\n ]);\n\n expect(allSortDropdowns[1]?.options.length).to.equal(3);\n expect(allSortDropdowns[1]?.options.map(o => o.id)).to.deep.equal([\n SortField.datefavorited,\n SortField.date,\n SortField.dateadded,\n ]);\n });\n\n it('renders a views button instead of a dropdown if it would only have one option', async () => {\n const customSortAvailability: Record<SortField, boolean> = {\n ...defaultSortAvailability,\n // Disable weekly views (but keep All-time Views)\n [SortField.weeklyview]: false,\n };\n\n el.sortFieldAvailability = customSortAvailability;\n await el.updateComplete;\n\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\n 'button',\n ) as NodeListOf<HTMLButtonElement>;\n expect(allSortSelectors).to.exist;\n expect(allSortSelectors.length).to.equal(4);\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\n expect(allSortSelectors[1]?.textContent?.trim()).to.equal('All-time views');\n expect(allSortSelectors[2]?.textContent?.trim()).to.equal('Title');\n expect(allSortSelectors[3]?.textContent?.trim()).to.equal('Creator');\n\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\n 'ia-dropdown',\n ) as NodeListOf<IaDropdown>;\n expect(allSortDropdowns).to.exist;\n expect(allSortDropdowns.length).to.equal(1);\n });\n\n it('renders a date button instead of a dropdown if it would only have one option', async () => {\n const customSortAvailability: Record<SortField, boolean> = {\n ...defaultSortAvailability,\n // Disable all default dates except Date Added\n [SortField.date]: false,\n [SortField.datearchived]: false,\n [SortField.datereviewed]: false,\n };\n\n el.sortFieldAvailability = customSortAvailability;\n await el.updateComplete;\n\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\n 'button',\n ) as NodeListOf<HTMLButtonElement>;\n expect(allSortSelectors).to.exist;\n expect(allSortSelectors.length).to.equal(4);\n expect(allSortSelectors[0]?.textContent?.trim()).to.equal('Relevance');\n expect(allSortSelectors[1]?.textContent?.trim()).to.equal('Title');\n expect(allSortSelectors[2]?.textContent?.trim()).to.equal('Date added');\n expect(allSortSelectors[3]?.textContent?.trim()).to.equal('Creator');\n\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\n 'ia-dropdown',\n ) as NodeListOf<IaDropdown>;\n expect(allSortDropdowns).to.exist;\n expect(allSortDropdowns.length).to.equal(1);\n });\n\n it('does not render a views dropdown that would have zero available options', async () => {\n const customSortAvailability: Record<SortField, boolean> = {\n ...defaultSortAvailability,\n // Disable all view sorts\n [SortField.weeklyview]: false,\n [SortField.alltimeview]: false,\n };\n\n el.sortFieldAvailability = customSortAvailability;\n await el.updateComplete;\n\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\n 'button',\n ) as NodeListOf<HTMLButtonElement>;\n expect(allSortSelectors).to.exist;\n expect(allSortSelectors.length).to.equal(3);\n\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\n 'ia-dropdown',\n ) as NodeListOf<IaDropdown>;\n expect(allSortDropdowns).to.exist;\n expect(allSortDropdowns.length).to.equal(1);\n expect(allSortDropdowns[0].options?.[0]?.id).to.equal(SortField.date);\n });\n\n it('does not render a date dropdown that would have zero available options', async () => {\n const customSortAvailability: Record<SortField, boolean> = {\n ...defaultSortAvailability,\n // Disable all date sorts\n [SortField.date]: false,\n [SortField.dateadded]: false,\n [SortField.datearchived]: false,\n [SortField.datereviewed]: false,\n };\n\n el.sortFieldAvailability = customSortAvailability;\n await el.updateComplete;\n\n const allSortSelectors = desktopSortSelector?.querySelectorAll(\n 'button',\n ) as NodeListOf<HTMLButtonElement>;\n expect(allSortSelectors).to.exist;\n expect(allSortSelectors.length).to.equal(3);\n\n const allSortDropdowns = desktopSortSelector?.querySelectorAll(\n 'ia-dropdown',\n ) as NodeListOf<IaDropdown>;\n expect(allSortDropdowns).to.exist;\n expect(allSortDropdowns.length).to.equal(1);\n expect(allSortDropdowns[0].options?.[0]?.id).to.equal(SortField.weeklyview);\n });\n\n it('allows changing the default views sort shown', async () => {\n el.defaultViewSort = SortField.alltimeview;\n await el.updateComplete;\n\n const viewsDropdown = el.shadowRoot?.querySelector(\n '#views-dropdown',\n ) as IaDropdown;\n expect(viewsDropdown).to.exist;\n expect(viewsDropdown.textContent?.trim()).to.equal('All-time views');\n });\n\n it('allows changing the default date sort shown', async () => {\n el.defaultDateSort = SortField.datereviewed;\n await el.updateComplete;\n\n const dateDropdown = el.shadowRoot?.querySelector(\n '#date-dropdown',\n ) as IaDropdown;\n expect(dateDropdown).to.exist;\n expect(dateDropdown.textContent?.trim()).to.equal('Date reviewed');\n });\n\n it('should render default view-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(1)\n ?.querySelector('ia-dropdown');\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Weekly views');\n });\n\n it('should render active view-sort selectors', async () => {\n el.selectedSort = 'alltimeview' as SortField;\n await el.updateComplete;\n\n const defaultSortSelector = desktopSortSelector?.querySelector(\n 'ia-dropdown.selected',\n );\n expect(defaultSortSelector?.textContent?.trim()).to.equal('All-time views');\n });\n\n it('should render default title-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(2)\n ?.querySelector('button');\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Title');\n });\n\n it('should render default date-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(3)\n ?.querySelector('ia-dropdown');\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Date published');\n });\n\n it('should render active date-sort selectors', async () => {\n el.selectedSort = 'datereviewed' as SortField;\n await el.updateComplete;\n\n const defaultSortSelector = desktopSortSelector?.querySelector(\n 'ia-dropdown.selected',\n );\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Date reviewed');\n });\n\n it('should render default creator-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(4)\n ?.querySelector('button');\n expect(defaultSortSelector?.textContent?.trim()).to.equal('Creator');\n });\n\n it('handles click event on view-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(1)\n ?.querySelector('.dropdown-label') as HTMLElement;\n\n defaultSortSelector?.click();\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('weeklyview');\n });\n\n it('handles click event on title selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(2)\n ?.querySelector('button');\n\n defaultSortSelector?.click();\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('title');\n });\n\n it('handles click event on date-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(3)\n ?.querySelector('.dropdown-label') as HTMLElement;\n\n defaultSortSelector?.click();\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('date');\n });\n\n it('handles click event on creator selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(4)\n ?.querySelector('button');\n\n defaultSortSelector?.click();\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('creator');\n });\n\n it('handles click event on relevance selector', async () => {\n el.sortFieldAvailability = {\n ...el.sortFieldAvailability,\n [SortField.relevance]: true,\n };\n el.selectedSort = 'title' as SortField;\n await el.updateComplete;\n\n const defaultSortSelector = desktopSortSelector?.children\n .item(0)\n ?.querySelector('button');\n\n defaultSortSelector?.click();\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('relevance');\n });\n\n it('handles return/space key event on view-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(1)\n ?.querySelector('.dropdown-label') as HTMLElement;\n\n el.selectedSort = 'relevance' as SortField;\n const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });\n defaultSortSelector?.dispatchEvent(enterEvent);\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('weeklyview');\n\n el.selectedSort = 'relevance' as SortField;\n const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });\n defaultSortSelector?.dispatchEvent(spaceEvent);\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('weeklyview');\n });\n\n it('handles return/space key event on date-sort selector', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(3)\n ?.querySelector('.dropdown-label') as HTMLElement;\n\n el.selectedSort = 'relevance' as SortField;\n const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });\n defaultSortSelector?.dispatchEvent(enterEvent);\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('date');\n\n el.selectedSort = 'relevance' as SortField;\n const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });\n defaultSortSelector?.dispatchEvent(spaceEvent);\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('date');\n });\n\n it('handles click event on view-sort dropdown option', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(1)\n ?.querySelector('ia-dropdown') as IaDropdown;\n\n const firstOption = defaultSortSelector?.shadowRoot?.querySelector(\n 'li > button',\n ) as HTMLButtonElement;\n expect(firstOption).to.exist;\n\n firstOption?.click();\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('weeklyview');\n });\n\n it('handles click event on date-sort dropdown option', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(3)\n ?.querySelector('ia-dropdown') as IaDropdown;\n\n const firstOption = defaultSortSelector?.shadowRoot?.querySelector(\n 'li > button',\n ) as HTMLButtonElement;\n expect(firstOption).to.exist;\n\n firstOption?.click();\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('date');\n });\n\n it('shows view sort selector backdrop when view sort open', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(1)\n ?.querySelector('ia-dropdown') as IaDropdown;\n\n const caret = defaultSortSelector?.shadowRoot?.querySelector(\n '.caret',\n ) as HTMLElement;\n expect(caret).to.exist;\n\n caret?.click();\n await el.updateComplete;\n\n let backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).to.exist;\n\n backdrop?.click();\n await el.updateComplete;\n\n backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).not.to.exist;\n });\n\n it('shows date sort selector backdrop when date sort open', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(3)\n ?.querySelector('ia-dropdown') as IaDropdown;\n\n const caret = defaultSortSelector?.shadowRoot?.querySelector(\n '.caret',\n ) as HTMLElement;\n expect(caret).to.exist;\n\n caret?.click();\n await el.updateComplete;\n\n let backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).to.exist;\n\n backdrop?.click();\n await el.updateComplete;\n\n backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).not.to.exist;\n });\n\n it('closes dropdown by hitting escape key', async () => {\n const defaultSortSelector = desktopSortSelector?.children\n .item(3)\n ?.querySelector('ia-dropdown') as IaDropdown;\n\n const caret = defaultSortSelector?.shadowRoot?.querySelector(\n '.caret',\n ) as HTMLElement;\n expect(caret).to.exist;\n\n caret?.click();\n await el.updateComplete;\n\n let backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).to.exist;\n\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));\n await el.updateComplete;\n\n backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).not.to.exist;\n });\n});\n\ndescribe('Sort direction button behavior', () => {\n it('should disable sort direction button when sorting by relevance', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.selectedSort = 'relevance' as SortField;\n await el.updateComplete;\n\n const sortDirectionButton = el.shadowRoot?.querySelector(\n '.sort-direction-selector',\n ) as HTMLButtonElement;\n expect(sortDirectionButton).to.exist;\n expect(sortDirectionButton.disabled).to.be.true;\n });\n\n it('should enable sort direction button when not sorting by relevance', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.selectedSort = 'title' as SortField;\n await el.updateComplete;\n\n const sortDirectionButton = el.shadowRoot?.querySelector(\n '.sort-direction-selector',\n ) as HTMLButtonElement;\n expect(sortDirectionButton).to.exist;\n expect(sortDirectionButton.disabled).to.be.false;\n });\n\n it('should toggle sort direction when clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n const sortDirectionButton = el.shadowRoot?.querySelector(\n '.sort-direction-selector',\n ) as HTMLButtonElement;\n\n sortDirectionButton.click();\n await el.updateComplete;\n expect(el.sortDirection).to.equal('desc');\n\n sortDirectionButton.click();\n await el.updateComplete;\n expect(el.sortDirection).to.equal('asc');\n });\n});\n\ndescribe('Display mode/style buttons', () => {\n it('should render all display mode buttons', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n const displayModeButtonList = el.shadowRoot\n ?.querySelector('#display-style-selector')\n ?.querySelector('ul');\n\n const gridButton = displayModeButtonList?.children\n .item(0)\n ?.querySelector('#grid-button');\n expect(gridButton).to.exist;\n\n const detailListButton = displayModeButtonList?.children\n .item(1)\n ?.querySelector('#list-detail-button');\n expect(detailListButton).to.exist;\n\n const compactListButton = displayModeButtonList?.children\n .item(2)\n ?.querySelector('#list-compact-button');\n expect(compactListButton).to.exist;\n });\n\n it('should not render display mode buttons when suppressed', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar suppressDisplayModes></sort-filter-bar>\n `);\n\n const displayModeButtonList = el.shadowRoot?.querySelector(\n '#display-style-selector',\n );\n expect(displayModeButtonList).not.to.exist;\n });\n\n it('should active current display mode', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.displayMode = 'grid';\n await el.updateComplete;\n\n const displayModeTitle = el.shadowRoot\n ?.querySelector('#display-style-selector')\n ?.querySelector('button.active')\n ?.getAttribute('title');\n expect(displayModeTitle).to.equal('Tile view');\n });\n\n it('should change displayMode prop to the one clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar> </sort-filter-bar>\n `);\n\n el.displayMode = 'grid';\n await el.updateComplete;\n\n const extendedListButton = el.shadowRoot?.querySelector(\n '#list-detail-button',\n ) as HTMLElement;\n extendedListButton.click();\n await el.updateComplete;\n expect(el.displayMode).to.equal('list-detail');\n\n const compactListButton = el.shadowRoot?.querySelector(\n '#list-compact-button',\n ) as HTMLElement;\n compactListButton.click();\n await el.updateComplete;\n expect(el.displayMode).to.equal('list-compact');\n\n const gridModeButton = el.shadowRoot?.querySelector(\n '#grid-button',\n ) as HTMLElement;\n gridModeButton.click();\n await el.updateComplete;\n expect(el.displayMode).to.equal('grid');\n });\n});\n\ndescribe('Sort/filter bar letter behavior', () => {\n it('sets the selected title letter when clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n el.selectedSort = 'title' as SortField;\n el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };\n await el.updateComplete;\n\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\n const letterLink = alphaBar?.shadowRoot?.querySelector(\n 'li > button:not(:disabled)',\n ) as HTMLAnchorElement;\n expect(letterLink?.textContent?.trim()).to.equal('T');\n\n letterLink?.click();\n await el.updateComplete;\n\n expect(el.selectedTitleFilter).to.equal('T');\n });\n\n it('sets the selected creator letter when clicked', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n el.selectedSort = 'creator' as SortField;\n el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };\n await el.updateComplete;\n\n const alphaBar = el.shadowRoot?.querySelector('alpha-bar');\n const letterLink = alphaBar?.shadowRoot?.querySelector(\n 'li > button:not(:disabled)',\n ) as HTMLAnchorElement;\n expect(letterLink?.textContent?.trim()).to.equal('C');\n\n letterLink?.click();\n await el.updateComplete;\n\n expect(el.selectedCreatorFilter).to.equal('C');\n });\n});\n\ndescribe('Sort/filter bar mobile view', () => {\n let origWindowSize: { width: number; height: number };\n before(() => {\n origWindowSize = { width: window.innerWidth, height: window.innerHeight };\n window.resizeTo(500, 600);\n });\n\n after(() => {\n window.resizeTo(origWindowSize.width, origWindowSize.height);\n });\n\n it('renders in mobile view', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n const mobileSortContainer = el.shadowRoot?.querySelector(\n '#mobile-sort-container',\n );\n const desktopSortContainer = el.shadowRoot?.querySelector(\n '#desktop-sort-container',\n );\n\n expect(mobileSortContainer?.classList?.contains('visible')).to.be.true;\n expect(desktopSortContainer?.classList?.contains('hidden')).to.be.true;\n });\n\n it('changes selected sort in mobile view', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n const mobileDropdown = el.shadowRoot?.querySelector(\n '#mobile-dropdown',\n ) as IaDropdown;\n expect(mobileDropdown).to.exist;\n\n mobileDropdown.selectedOption = 'title';\n const option = { id: 'title' };\n mobileDropdown.dispatchEvent(\n new CustomEvent('optionSelected', { detail: { option } }),\n );\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('title');\n });\n\n it('clears title filter when sort changed from title in mobile view', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n el.selectedSort = 'title' as SortField;\n el.selectedTitleFilter = 'A';\n await el.updateComplete;\n\n const mobileDropdown = el.shadowRoot?.querySelector(\n '#mobile-dropdown',\n ) as IaDropdown;\n expect(mobileDropdown).to.exist;\n\n mobileDropdown.selectedOption = 'relevance';\n const option = { id: 'relevance' };\n mobileDropdown.dispatchEvent(\n new CustomEvent('optionSelected', { detail: { option } }),\n );\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('relevance');\n expect(el.selectedTitleFilter).to.be.null;\n });\n\n it('clears creator filter when sort changed from creator in mobile view', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n el.selectedSort = 'creator' as SortField;\n el.selectedCreatorFilter = 'A';\n await el.updateComplete;\n\n const mobileDropdown = el.shadowRoot?.querySelector(\n '#mobile-dropdown',\n ) as IaDropdown;\n expect(mobileDropdown).to.exist;\n\n mobileDropdown.selectedOption = 'relevance';\n const option = { id: 'relevance' };\n mobileDropdown.dispatchEvent(\n new CustomEvent('optionSelected', { detail: { option } }),\n );\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal('relevance');\n expect(el.selectedCreatorFilter).to.be.null;\n });\n\n it('shows sort selector backdrop when mobile sort open', async () => {\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar></sort-filter-bar>\n `);\n\n const mobileDropdown = el.shadowRoot?.querySelector(\n '#mobile-dropdown',\n ) as IaDropdown;\n expect(mobileDropdown).to.exist;\n\n const caret = mobileDropdown?.shadowRoot?.querySelector(\n '.caret',\n ) as HTMLElement;\n expect(caret).to.exist;\n\n caret?.click();\n await el.updateComplete;\n\n let backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).to.exist;\n\n backdrop?.click();\n await el.updateComplete;\n\n backdrop = el.shadowRoot?.querySelector(\n '#sort-selector-backdrop',\n ) as HTMLElement;\n expect(backdrop).not.to.exist;\n });\n\n it('shows loansTab top-bar slot Default View', async () => {\n const resizeStub = new SharedResizeObserver();\n const addSpy = sinon.spy(resizeStub, 'addObserver');\n const removeSpy = sinon.spy(resizeStub, 'removeObserver');\n\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar .resizeObserver=${resizeStub}></sort-filter-bar>\n `);\n\n // this element exists\n expect(el?.shadowRoot?.querySelector('#sort-selector-container')).to.exist;\n\n // loads & unloads twice when [re]setting ResizeObserver\n expect(addSpy.callCount).to.equal(2);\n\n const resizeStub2 = new SharedResizeObserver();\n el.resizeObserver = resizeStub2;\n await el.updateComplete;\n expect(removeSpy.callCount).to.equal(2);\n });\n\n it('contains sort-options slot when enabled', async () => {\n const resizeStub = new SharedResizeObserver();\n const addSpy = sinon.spy(resizeStub, 'addObserver');\n const removeSpy = sinon.spy(resizeStub, 'removeObserver');\n\n const el = await fixture<SortFilterBar>(html`\n <sort-filter-bar\n .resizeObserver=${resizeStub}\n .enableSortOptionsSlot=${true}\n ></sort-filter-bar>\n `);\n\n await el.updateComplete;\n\n // slot exists\n const sortOptionsSlot = el?.shadowRoot?.querySelector(\n 'slot[name=\"sort-options\"]',\n );\n expect(sortOptionsSlot).to.exist;\n\n // sort bar does not exist\n expect(el?.shadowRoot?.querySelector('#sort-selector-container')).to.not\n .exist;\n\n const resizeStub2 = new SharedResizeObserver();\n el.resizeObserver = resizeStub2;\n await el.updateComplete;\n\n // there's no need for resize observer\n expect(addSpy.callCount).to.equal(0);\n expect(removeSpy.callCount).to.equal(0);\n });\n});\n"]}
|