@magicx-eng/ai-autocomplete-angular 0.29.1 → 0.30.0
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/README.md +17 -2
- package/esm2020/lib/internal/product-strip/product-strip.component.mjs +4 -3
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs +3 -2
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs +3 -2
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/lib/internal/product-strip/product-strip.component.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -473,7 +473,10 @@ Each server item becomes a `Product` with `id` (the item's stable id), `title`,
|
|
|
473
473
|
currency is yours to add), `vendor`, `imageUrl`, and a `url`: the item's own
|
|
474
474
|
`item_url` when the uploaded catalog named one (absolute or root-relative;
|
|
475
475
|
anything else is ignored), else a **relative** `/products/{handle}` — the right
|
|
476
|
-
link for a Shopify widget running on the storefront itself
|
|
476
|
+
link for a Shopify widget running on the storefront itself — opened on the
|
|
477
|
+
variant the query chose (`?variant=…`, e.g. the blue one for "blue shoes") when
|
|
478
|
+
there is one, whose price and image the card then shows. `available` is carried
|
|
479
|
+
over when the server reports it. An item with
|
|
477
480
|
neither gets no `url`: its card is still activatable and still emits
|
|
478
481
|
`(productSelect)`, it just has nothing for cmd-click to open. `productFromMatchedItem` / `productsFromCustomFields` are
|
|
479
482
|
exported for a hand-rolled strip that wants the same mapping.
|
|
@@ -500,6 +503,17 @@ empty or whitespace-only title shows `?`. The fallback works in both row and
|
|
|
500
503
|
list layouts. Initial tiles are decorative (`aria-hidden="true"`); the card's
|
|
501
504
|
visible title supplies its text.
|
|
502
505
|
|
|
506
|
+
**Sold out.** A product with `available: false` shows a "Sold out" badge over
|
|
507
|
+
the top-left of its image (in the list layout, a smaller banner across the
|
|
508
|
+
bottom of the thumbnail) and its image is desaturated; the card stays
|
|
509
|
+
selectable and keeps its link. Absent or `true` shows no
|
|
510
|
+
badge, so leave `available` out when you don't know. The badge is part of the
|
|
511
|
+
card's text, so screen readers announce it. Theme it with
|
|
512
|
+
`--aia-product-badge-bg`, `--aia-product-badge-color`,
|
|
513
|
+
`--aia-product-badge-font-size` and `--aia-product-badge-inset`, and the list
|
|
514
|
+
banner with `--aia-product-badge-list-bg`, `--aia-product-badge-list-color` and
|
|
515
|
+
`--aia-product-badge-list-font-size`.
|
|
516
|
+
|
|
503
517
|
Bind `productImageFallback` on `<ai-autocomplete>` in Tier 1 or directly
|
|
504
518
|
on `<ai-autocomplete-dropdown>` in Tier 2:
|
|
505
519
|
|
|
@@ -625,7 +639,7 @@ export class SearchComponent {
|
|
|
625
639
|
}
|
|
626
640
|
```
|
|
627
641
|
|
|
628
|
-
`Product` is exactly
|
|
642
|
+
`Product` is exactly seven fields; only `id` and `title` are required:
|
|
629
643
|
|
|
630
644
|
```ts
|
|
631
645
|
type Product = {
|
|
@@ -635,6 +649,7 @@ type Product = {
|
|
|
635
649
|
imageUrl?: string | null;
|
|
636
650
|
price?: string;
|
|
637
651
|
vendor?: string;
|
|
652
|
+
available?: boolean; // false shows a "Sold out" badge
|
|
638
653
|
};
|
|
639
654
|
```
|
|
640
655
|
|
|
@@ -59,6 +59,7 @@ export class ProductStripComponent {
|
|
|
59
59
|
product.imageUrl ?? "",
|
|
60
60
|
product.price ?? "",
|
|
61
61
|
product.vendor ?? "",
|
|
62
|
+
product.available === false ? "sold-out" : "",
|
|
62
63
|
].join("\0");
|
|
63
64
|
}
|
|
64
65
|
ngOnChanges() {
|
|
@@ -123,10 +124,10 @@ export class ProductStripComponent {
|
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
126
|
ProductStripComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProductStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
126
|
-
ProductStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ProductStripComponent, isStandalone: true, selector: "aia-product-strip", inputs: { products: "products", listboxId: "listboxId", focusable: "focusable", layout: "layout", imageFallback: "imageFallback" }, outputs: { select: "select", focusChange: "focusChange" }, viewQueries: [{ propertyName: "row", first: true, predicate: ["row"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
127
|
+
ProductStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ProductStripComponent, isStandalone: true, selector: "aia-product-strip", inputs: { products: "products", listboxId: "listboxId", focusable: "focusable", layout: "layout", imageFallback: "imageFallback" }, outputs: { select: "select", focusChange: "focusChange" }, viewQueries: [{ propertyName: "row", first: true, predicate: ["row"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">Sold out</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
127
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProductStripComponent, decorators: [{
|
|
128
129
|
type: Component,
|
|
129
|
-
args: [{ selector: "aia-product-strip", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}\n"] }]
|
|
130
|
+
args: [{ selector: "aia-product-strip", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">Sold out</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"] }]
|
|
130
131
|
}], propDecorators: { products: [{
|
|
131
132
|
type: Input
|
|
132
133
|
}], listboxId: [{
|
|
@@ -145,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
145
146
|
type: ViewChild,
|
|
146
147
|
args: ["row"]
|
|
147
148
|
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zdHJpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBSXJCLGNBQWMsR0FDZixNQUFNLHFDQUFxQyxDQUFDOzs7QUFFN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFVSCxNQUFNLE9BQU8scUJBQXFCO0lBVGxDO1FBVVcsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUNsQywyREFBMkQ7UUFDbEQsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN4Qjs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQiw4RkFBOEY7UUFDckYsV0FBTSxHQUFtQixLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBeUIsT0FBTyxDQUFDO1FBQzlDLFlBQU8sR0FBRyxjQUFjLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQW1CdkMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDeEQ7Ozs7O1dBS0c7UUFDZ0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXJELGdCQUFXLEdBQXdCLElBQUksQ0FBQztRQTBCaEQ7OztXQUdHO1FBQ0gsbUJBQWMsR0FBRyxDQUFDLENBQVMsRUFBRSxPQUFnQixFQUFVLEVBQUUsQ0FDdkQ7WUFDRSxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLO1lBQ2IsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRTtZQUN0QixPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbkIsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFO1NBQ3JCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBNEJoQjtJQTVGQyxXQUFXO1FBQ1QsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHO2dCQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFnQjtRQUMxQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZ0I7UUFDM0IsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLEdBQUc7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFhRDs7OztPQUlHO0lBQ0gsSUFDSSxHQUFHLENBQUMsR0FBd0M7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxpQkFBaUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVksS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQWdCRCxPQUFPLENBQUMsS0FBaUIsRUFBRSxPQUFnQjtRQUN6Qyx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLGlFQUFpRTtRQUNqRSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUYsT0FBTztTQUNSO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBb0IsRUFBRSxPQUFnQjtRQUM5QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRztZQUFFLE9BQU87UUFDdkQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFpQjtRQUMxQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsYUFBbUMsQ0FBQztRQUN2RCxJQUFJLElBQUksRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUM7WUFBRSxPQUFPO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7O21IQTNHVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw2WENsRGxDLG1nR0FrRUEsZzhPRHRCWSxZQUFZOzRGQU1YLHFCQUFxQjtrQkFUakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OEJBSzVCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQXFCYSxNQUFNO3NCQUF4QixNQUFNO2dCQU9ZLFdBQVc7c0JBQTdCLE1BQU07Z0JBVUgsR0FBRztzQkFETixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICB0eXBlIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIHR5cGUgT25DaGFuZ2VzLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXR0YWNoUHJvZHVjdFJvd1doZWVsLFxuICB0eXBlIFByb2R1Y3QsXG4gIHR5cGUgUHJvZHVjdEltYWdlRmFsbGJhY2ssXG4gIHR5cGUgUHJvZHVjdHNMYXlvdXQsXG4gIHByb2R1Y3RJbml0aWFsLFxufSBmcm9tIFwiQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLXZhbmlsbGFcIjtcblxuLyoqXG4gKiBJbnRlcm5hbCBwcm9kdWN0IHN0cmlwIHJlbmRlcmVkIGJlbG93IHRoZSBkcm9wZG93bidzIG9wdGlvbnMgZ3JpZC4gTWlycm9yc1xuICogYHBhY2thZ2VzL3JlYWN0L3NyYy9jb21wb25lbnRzL1Byb2R1Y3RTdHJpcC50c3hgIGFuZCB0aGUgdmFuaWxsYSBjb3JlJ3NcbiAqIGByZW5kZXJQcm9kdWN0U3RyaXBgLCBzbyBhbGwgdGhyZWUgcGFja2FnZXMgZW1pdCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYW5kXG4gKiB0aGVtZSBpZGVudGljYWxseS5cbiAqXG4gKiBUd28gbGF5b3V0IG5vdGVzIGNhcnJpZWQgb3ZlciBmcm9tIHRoZSB2YW5pbGxhIGltcGxlbWVudGF0aW9uOlxuICpcbiAqIC0gVGhlIGRyb3Bkb3duIHBhaW50cyBhIGJhY2tncm91bmQgYnV0IG5ldmVyIHNldHMgYGNvbG9yYCwgc28gYW55dGhpbmcgaGVyZVxuICogICByZWx5aW5nIG9uIGBjb2xvcjogaW5oZXJpdGAgd291bGQgcGljayB1cCB0aGUgKmhvc3QgcGFnZSdzKiB0ZXh0IGNvbG91ciDigJRcbiAqICAgYmxhY2sgdGV4dCBvbiBhIGRhcmsgcGFuZWwuIEV2ZXJ5IHRleHQgbm9kZSByZXNvbHZlcyBpdHMgY29sb3VyIHRocm91Z2hcbiAqICAgdGhlIHNhbWUgYC0tYWlhLW9wdGlvbi0qYCBjaGFpbiB0aGUgb3B0aW9ucyB1c2UuXG4gKiAtIFRoZSBvcHRpb25zIGdyaWQgY2FycmllcyBhIG5lZ2F0aXZlIGJvdHRvbSBtYXJnaW4gc28gdGhlIGZvb3RlciByaWRlcyB1cFxuICogICBvdmVyIGl0cyByZXNlcnZlZCBiYW5kLCBhbmQgd2hhdGV2ZXIgZm9sbG93cyB0aGUgZ3JpZCBpbmhlcml0cyB0aGF0IHB1bGwuXG4gKiAgIFRoZSBkcm9wZG93biByb290IGlzIG1hcmtlZCBgZGF0YS1haWEtaGFzLXByb2R1Y3RzYCBhbmQgdGhlIGFwcGVhcmFuY2VcbiAqICAgbGF5ZXIgemVyb2VzIHRoZSBiYW5kIGF0IGl0cyBzb3VyY2UgcmF0aGVyIHRoYW4gdGhlIHN0cmlwIGNhbmNlbGxpbmcgaXRcbiAqICAgZnJvbSBoZXJlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYWlhLXByb2R1Y3Qtc3RyaXBcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogXCIuL3Byb2R1Y3Qtc3RyaXAuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3Byb2R1Y3Qtc3RyaXAuY29tcG9uZW50LmNzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdFN0cmlwQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcm9kdWN0czogUHJvZHVjdFtdID0gW107XG4gIC8qKiBTY29wZXMgdGhlIHNlY3Rpb24gbGFiZWwncyBpZCB0byB0aGUgb3duaW5nIGxpc3Rib3guICovXG4gIEBJbnB1dCgpIGxpc3Rib3hJZCA9IFwiXCI7XG4gIC8qKlxuICAgKiBGYWxzZSB3aGlsZSB0aGUgcGFuZWwgaXMgZmFkaW5nIG91dC4gVGhlIGNsb3NlZCBkcm9wZG93biBrZWVwcyByZW5kZXJpbmdcbiAgICogaXRzIGxhc3QgY29udGVudCBmb3IgdGhlIGZhZGUsIGFuZCBmb2N1c2FibGUgY2FyZHMgaW5zaWRlIGl0IHdvdWxkIHN0aWxsXG4gICAqIGFuc3dlciBUYWIuXG4gICAqL1xuICBASW5wdXQoKSBmb2N1c2FibGUgPSB0cnVlO1xuICAvKiogSG93IHRoZSBjYXJkcyBsYXkgb3V0IOKAlCBhIHNjcm9sbGluZyByb3csIG9yIHN0YWNrZWQgYXMgZnVsbC13aWR0aCByb3dzLiBEZWZhdWx0OiBcInJvd1wiLiAqL1xuICBASW5wdXQoKSBsYXlvdXQ6IFByb2R1Y3RzTGF5b3V0ID0gXCJyb3dcIjtcbiAgQElucHV0KCkgaW1hZ2VGYWxsYmFjazogUHJvZHVjdEltYWdlRmFsbGJhY2sgPSBcImltYWdlXCI7XG4gIHJlYWRvbmx5IGluaXRpYWwgPSBwcm9kdWN0SW5pdGlhbDtcbiAgcHJpdmF0ZSByZWFkb25seSBmYWlsZWRJbWFnZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgTWFwKHRoaXMucHJvZHVjdHMubWFwKChwcm9kdWN0KSA9PiBbcHJvZHVjdC5pZCwgcHJvZHVjdC5pbWFnZVVybD8udHJpbSgpXSkpO1xuICAgIGZvciAoY29uc3QgW2lkLCBzcmNdIG9mIHRoaXMuZmFpbGVkSW1hZ2VzKSB7XG4gICAgICBpZiAoc291cmNlcy5nZXQoaWQpICE9PSBzcmMpIHRoaXMuZmFpbGVkSW1hZ2VzLmRlbGV0ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgaW1hZ2VTb3VyY2UocHJvZHVjdDogUHJvZHVjdCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHNyYyA9IHByb2R1Y3QuaW1hZ2VVcmw/LnRyaW0oKTtcbiAgICByZXR1cm4gc3JjICYmIHRoaXMuZmFpbGVkSW1hZ2VzLmdldChwcm9kdWN0LmlkKSAhPT0gc3JjID8gc3JjIDogbnVsbDtcbiAgfVxuXG4gIG9uSW1hZ2VFcnJvcihwcm9kdWN0OiBQcm9kdWN0KTogdm9pZCB7XG4gICAgY29uc3Qgc3JjID0gcHJvZHVjdC5pbWFnZVVybD8udHJpbSgpO1xuICAgIGlmIChzcmMpIHRoaXMuZmFpbGVkSW1hZ2VzLnNldChwcm9kdWN0LmlkLCBzcmMpO1xuICB9XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJvZHVjdD4oKTtcbiAgLyoqXG4gICAqIEZvY3VzIG1vdmVkIGludG8gLyBvdXQgb2YgdGhlIHN0cmlwLiBUaGUgcGFuZWwgY2xvc2VzIG9uIGJsdXIgYnkgZGVmYXVsdFxuICAgKiBhbmQgdGhlIGVkaXRvciBibHVycyB0aGUgbW9tZW50IGEgY2FyZCB0YWtlcyBmb2N1cywgc28gdGhlIGRyb3Bkb3duXG4gICAqIHJlcG9ydHMgZm9jdXMgYXMgc3RpbGwtaW5zaWRlIHJhdGhlciB0aGFuIHNodXR0aW5nIG91dCBmcm9tIHVuZGVyIHRoZSBjYXJkXG4gICAqIHRoZSB1c2VyIGp1c3QgdGFiYmVkIHRvLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGZvY3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgZGV0YWNoV2hlZWw6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBBIG1vdXNlIHdoZWVsIG92ZXIgdGhlIHJvdyBzY3JvbGxzIGl0IHNpZGV3YXlzLiBUaGUgcm93IHNpdHMgaW5zaWRlIHRoZVxuICAgKiBzZWN0aW9uJ3MgYCpuZ0lmYCwgc28gdGhlIHF1ZXJ5IGZpcmVzIHdpdGggdGhlIGVsZW1lbnQgYXMgcHJvZHVjdHMgYXJyaXZlXG4gICAqIGFuZCB3aXRoIGB1bmRlZmluZWRgIGFzIHRoZXkgZ287IHRoZSBiaW5kaW5nIGZvbGxvd3MgaXQgZWl0aGVyIHdheS5cbiAgICovXG4gIEBWaWV3Q2hpbGQoXCJyb3dcIilcbiAgc2V0IHJvdyhyZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5kZXRhY2hXaGVlbD8uKCk7XG4gICAgdGhpcy5kZXRhY2hXaGVlbCA9IHJlZiA/IGF0dGFjaFByb2R1Y3RSb3dXaGVlbChyZWYubmF0aXZlRWxlbWVudCkgOiBudWxsO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhY2hXaGVlbD8uKCk7XG4gICAgdGhpcy5kZXRhY2hXaGVlbCA9IG51bGw7XG4gIH1cblxuICBnZXQgbGFiZWxJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmxpc3Rib3hJZH0tcHJvZHVjdHMtbGFiZWxgO1xuICB9XG5cbiAgY2FyZElkKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmxpc3Rib3hJZH0tcHJvZHVjdC0ke2luZGV4fWA7XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpdHkgKmFuZCogY29udGVudDogYSBzYW1lLWlkIHJlc3VsdCB3aG9zZSBmaWVsZHMgY2hhbmdlZCBtdXN0XG4gICAqIHJlLXJlbmRlciByYXRoZXIgdGhhbiByZXVzZSB0aGUgcHJldmlvdXMgY2FyZCdzIGJpbmRpbmdzLlxuICAgKi9cbiAgdHJhY2tCeVByb2R1Y3QgPSAoXzogbnVtYmVyLCBwcm9kdWN0OiBQcm9kdWN0KTogc3RyaW5nID0+XG4gICAgW1xuICAgICAgcHJvZHVjdC5pZCxcbiAgICAgIHByb2R1Y3QudGl0bGUsXG4gICAgICBwcm9kdWN0LnVybCA/PyBcIlwiLFxuICAgICAgcHJvZHVjdC5pbWFnZVVybCA/PyBcIlwiLFxuICAgICAgcHJvZHVjdC5wcmljZSA/PyBcIlwiLFxuICAgICAgcHJvZHVjdC52ZW5kb3IgPz8gXCJcIixcbiAgICBdLmpvaW4oXCJcXDBcIik7XG5cbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCk6IHZvaWQge1xuICAgIC8vIExldCB0aGUgYnJvd3NlciBrZWVwIHRoZSBjbGlja3MgdGhhdCBtZWFuIFwib3BlbiB0aGlzIHNvbWV3aGVyZSBlbHNlXCIg4oCUXG4gICAgLy8gaW50ZXJjZXB0aW5nIHRoZW0gd291bGQgZGVmZWF0IHRoZSBwb2ludCBvZiByZW5kZXJpbmcgYW4gPGE+LiBUaG9zZSBhcmVcbiAgICAvLyBuYXZpZ2F0aW9ucyB0aGUgdXNlciBhc2tlZCBmb3IgZXhwbGljaXRseSwgc28gdGhleSBkb24ndCBlbWl0LlxuICAgIGlmIChldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc2VsZWN0LmVtaXQocHJvZHVjdCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb2R1Y3Q6IFByb2R1Y3QpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSBcIkVudGVyXCIgJiYgZXZlbnQua2V5ICE9PSBcIiBcIikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChwcm9kdWN0KTtcbiAgfVxuXG4gIG9uQ2FyZEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIG9uQ2FyZEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKG5leHQ/LmNsb3Nlc3QoXCJbZGF0YS1haWEtZHJvcGRvd25dXCIpKSByZXR1cm47XG4gICAgdGhpcy5mb2N1c0NoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiPCEtLSBgZ3JvdXBgIGlzIHRoZSBvbmUgcm9sZSBhIGxpc3Rib3ggYWNjZXB0cyBhcm91bmQgYSBzZXQgb2Ygb3B0aW9ucywgc28gdGhlXG4gICAgIHN0cmlwIHN0YXlzIGluc2lkZSB0aGUgbGlzdGJveCB3aXRob3V0IGJyZWFraW5nIGl0cyBjb250ZW50IG1vZGVsLiAtLT5cbjxzZWN0aW9uXG4gICpuZ0lmPVwicHJvZHVjdHMubGVuZ3RoID4gMFwiXG4gIGNsYXNzPVwiYWlhLXByb2R1Y3RzXCJcbiAgZGF0YS1haWEtcHJvZHVjdHM9XCJcIlxuICBbYXR0ci5kYXRhLWFpYS1wcm9kdWN0cy1sYXlvdXRdPVwibGF5b3V0XCJcbiAgcm9sZT1cImdyb3VwXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsSWRcIlxuPlxuICA8IS0tIGRhdGEtYWlhLXByb2R1Y3RzLWxhYmVsOiB0aGUgc2Nyb2xsIGFycm93IGNlbnRyZXMgaXRzZWxmIG9uIHRoaXMgcm93LiAtLT5cbiAgPGRpdiBjbGFzcz1cImFpYS1wcm9kdWN0cy1sYWJlbFwiIFtpZF09XCJsYWJlbElkXCIgZGF0YS1haWEtcHJvZHVjdHMtbGFiZWw9XCJcIj5Qcm9kdWN0czwvZGl2PlxuXG4gIDwhLS0gI3JvdzogdGhlIGNvbXBvbmVudCBiaW5kcyB3aGVlbC10by1zaWRld2F5cyBzY3JvbGxpbmcgb24gaXQuIC0tPlxuICA8ZGl2ICNyb3cgY2xhc3M9XCJhaWEtcHJvZHVjdHMtcm93XCIgZGF0YS1haWEtcHJvZHVjdHMtcm93PVwiXCI+XG4gICAgPCEtLSBBIHJlYWwgPGEgaHJlZj4gcmF0aGVyIHRoYW4gYSA8ZGl2PjogaXQga2VlcHMgdGhlIGJyb3dzZXIncyBvd24gbGlua1xuICAgICAgICAgYWZmb3JkYW5jZXMg4oCUIGNtZC9jdHJsLWNsaWNrIGZvciBhIG5ldyB0YWIsIG1pZGRsZS1jbGljaywgcmlnaHQtY2xpY2sg4oaSXG4gICAgICAgICBcImNvcHkgbGluayBhZGRyZXNzXCIuIHJvbGU9XCJvcHRpb25cIiBvdmVycmlkZXMgaG93IGFzc2lzdGl2ZSB0ZWNoXG4gICAgICAgICBhbm5vdW5jZXMgaXQsIHdoaWNoIGlzIGNvcnJlY3QgaW5zaWRlIGEgbGlzdGJveDsgdGhlIGRlbGliZXJhdGUgdHJhZGVcbiAgICAgICAgIGlzIHRoYXQgQVQgbm8gbG9uZ2VyIGNhbGxzIGl0IGEgbGluay4gQW4gYXR0cmlidXRlIGJpbmRpbmcsIHNvIGFcbiAgICAgICAgIHByb2R1Y3Qgd2l0aG91dCBhIHVybCBnZXRzIG5vIGhyZWYgYXQgYWxsIHJhdGhlciB0aGFuIFwibnVsbFwiLiAtLT5cbiAgICA8YVxuICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlQcm9kdWN0XCJcbiAgICAgIFtpZF09XCJjYXJkSWQoaSlcIlxuICAgICAgY2xhc3M9XCJhaWEtcHJvZHVjdFwiXG4gICAgICBkYXRhLWFpYS1wcm9kdWN0PVwiXCJcbiAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJmYWxzZVwiXG4gICAgICBbYXR0ci5ocmVmXT1cInByb2R1Y3QudXJsID8/IG51bGxcIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgcHJvZHVjdClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgcHJvZHVjdClcIlxuICAgICAgKGZvY3VzKT1cIm9uQ2FyZEZvY3VzKClcIlxuICAgICAgKGJsdXIpPVwib25DYXJkQmx1cigkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImFpYS1wcm9kdWN0LW1lZGlhXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuZGF0YS1haWEtcHJvZHVjdC1wbGFjZWhvbGRlcl09XCIhaW1hZ2VTb3VyY2UocHJvZHVjdCkgJiYgaW1hZ2VGYWxsYmFjayA9PT0gJ2ltYWdlJyA/ICcnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmRhdGEtYWlhLXByb2R1Y3QtaW5pdGlhbF09XCIhaW1hZ2VTb3VyY2UocHJvZHVjdCkgJiYgaW1hZ2VGYWxsYmFjayA9PT0gJ2luaXRpYWwnID8gJycgOiBudWxsXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBhbHQ9XCJcIiBvbiBwdXJwb3NlOiB0aGUgdGl0bGUgaXMgYWxyZWFkeSB0aGUgY2FyZCdzIGFjY2Vzc2libGVcbiAgICAgICAgICAgICBuYW1lLCBhbmQgcmVwZWF0aW5nIGl0IHdvdWxkIGhhdmUgYSBzY3JlZW4gcmVhZGVyIHJlYWQgaXQgdHdpY2UuIC0tPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJpbWFnZVNvdXJjZShwcm9kdWN0KSBhcyBzcmNcIlxuICAgICAgICAgIGNsYXNzPVwiYWlhLXByb2R1Y3QtaW1hZ2VcIlxuICAgICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKHByb2R1Y3QpXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICBkZWNvZGluZz1cImFzeW5jXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbWFnZVNvdXJjZShwcm9kdWN0KSAmJiBpbWFnZUZhbGxiYWNrID09PSAnaW5pdGlhbCdcIj57eyBpbml0aWFsKHByb2R1Y3QudGl0bGUpIH19PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gRXZlcnkgZmllbGQgYnV0IHRoZSB0aXRsZSBpcyBvcHRpb25hbCwgc28gYWJzZW50IG9uZXMgcmVuZGVyIG5vXG4gICAgICAgICAgIGVsZW1lbnQgYXQgYWxsIOKAlCB0aGUgY29sdW1uIGdhcCBjYW4ndCBsZWF2ZSBhIGhvbGUgZm9yIGEgYm94IHRoYXRcbiAgICAgICAgICAgaXNuJ3QgdGhlcmUuIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhaWEtcHJvZHVjdC1ib2R5XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC52ZW5kb3JcIiBjbGFzcz1cImFpYS1wcm9kdWN0LXZlbmRvclwiPnt7IHByb2R1Y3QudmVuZG9yIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFpYS1wcm9kdWN0LXRpdGxlXCI+e3sgcHJvZHVjdC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LnByaWNlXCIgY2xhc3M9XCJhaWEtcHJvZHVjdC1wcmljZVwiPnt7IHByb2R1Y3QucHJpY2UgfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zdHJpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBSXJCLGNBQWMsR0FDZixNQUFNLHFDQUFxQyxDQUFDOzs7QUFFN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFVSCxNQUFNLE9BQU8scUJBQXFCO0lBVGxDO1FBVVcsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUNsQywyREFBMkQ7UUFDbEQsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN4Qjs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQiw4RkFBOEY7UUFDckYsV0FBTSxHQUFtQixLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBeUIsT0FBTyxDQUFDO1FBQzlDLFlBQU8sR0FBRyxjQUFjLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQW1CdkMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDeEQ7Ozs7O1dBS0c7UUFDZ0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXJELGdCQUFXLEdBQXdCLElBQUksQ0FBQztRQTBCaEQ7OztXQUdHO1FBQ0gsbUJBQWMsR0FBRyxDQUFDLENBQVMsRUFBRSxPQUFnQixFQUFVLEVBQUUsQ0FDdkQ7WUFDRSxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLO1lBQ2IsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRTtZQUN0QixPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbkIsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDOUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0E0QmhCO0lBN0ZDLFdBQVc7UUFDVCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDekMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUc7Z0JBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWdCO1FBQzFCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkUsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFnQjtRQUMzQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQWFEOzs7O09BSUc7SUFDSCxJQUNJLEdBQUcsQ0FBQyxHQUF3QztRQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLGlCQUFpQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsWUFBWSxLQUFLLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBaUJELE9BQU8sQ0FBQyxLQUFpQixFQUFFLE9BQWdCO1FBQ3pDLHlFQUF5RTtRQUN6RSwwRUFBMEU7UUFDMUUsaUVBQWlFO1FBQ2pFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxRixPQUFPO1NBQ1I7UUFDRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQixFQUFFLE9BQWdCO1FBQzlDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHO1lBQUUsT0FBTztRQUN2RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWlCO1FBQzFCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFtQyxDQUFDO1FBQ3ZELElBQUksSUFBSSxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztZQUFFLE9BQU87UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7bUhBNUdVLHFCQUFxQjt1R0FBckIscUJBQXFCLDZYQ2xEbEMsZzNHQXVFQSxrL1FEM0JZLFlBQVk7NEZBTVgscUJBQXFCO2tCQVRqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFLNUIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBcUJhLE1BQU07c0JBQXhCLE1BQU07Z0JBT1ksV0FBVztzQkFBN0IsTUFBTTtnQkFVSCxHQUFHO3NCQUROLFNBQVM7dUJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIHR5cGUgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgdHlwZSBPbkNoYW5nZXMsXG4gIHR5cGUgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBhdHRhY2hQcm9kdWN0Um93V2hlZWwsXG4gIHR5cGUgUHJvZHVjdCxcbiAgdHlwZSBQcm9kdWN0SW1hZ2VGYWxsYmFjayxcbiAgdHlwZSBQcm9kdWN0c0xheW91dCxcbiAgcHJvZHVjdEluaXRpYWwsXG59IGZyb20gXCJAbWFnaWN4LWVuZy9haS1hdXRvY29tcGxldGUtdmFuaWxsYVwiO1xuXG4vKipcbiAqIEludGVybmFsIHByb2R1Y3Qgc3RyaXAgcmVuZGVyZWQgYmVsb3cgdGhlIGRyb3Bkb3duJ3Mgb3B0aW9ucyBncmlkLiBNaXJyb3JzXG4gKiBgcGFja2FnZXMvcmVhY3Qvc3JjL2NvbXBvbmVudHMvUHJvZHVjdFN0cmlwLnRzeGAgYW5kIHRoZSB2YW5pbGxhIGNvcmUnc1xuICogYHJlbmRlclByb2R1Y3RTdHJpcGAsIHNvIGFsbCB0aHJlZSBwYWNrYWdlcyBlbWl0IHRoZSBzYW1lIHN0cnVjdHVyZSBhbmRcbiAqIHRoZW1lIGlkZW50aWNhbGx5LlxuICpcbiAqIFR3byBsYXlvdXQgbm90ZXMgY2FycmllZCBvdmVyIGZyb20gdGhlIHZhbmlsbGEgaW1wbGVtZW50YXRpb246XG4gKlxuICogLSBUaGUgZHJvcGRvd24gcGFpbnRzIGEgYmFja2dyb3VuZCBidXQgbmV2ZXIgc2V0cyBgY29sb3JgLCBzbyBhbnl0aGluZyBoZXJlXG4gKiAgIHJlbHlpbmcgb24gYGNvbG9yOiBpbmhlcml0YCB3b3VsZCBwaWNrIHVwIHRoZSAqaG9zdCBwYWdlJ3MqIHRleHQgY29sb3VyIOKAlFxuICogICBibGFjayB0ZXh0IG9uIGEgZGFyayBwYW5lbC4gRXZlcnkgdGV4dCBub2RlIHJlc29sdmVzIGl0cyBjb2xvdXIgdGhyb3VnaFxuICogICB0aGUgc2FtZSBgLS1haWEtb3B0aW9uLSpgIGNoYWluIHRoZSBvcHRpb25zIHVzZS5cbiAqIC0gVGhlIG9wdGlvbnMgZ3JpZCBjYXJyaWVzIGEgbmVnYXRpdmUgYm90dG9tIG1hcmdpbiBzbyB0aGUgZm9vdGVyIHJpZGVzIHVwXG4gKiAgIG92ZXIgaXRzIHJlc2VydmVkIGJhbmQsIGFuZCB3aGF0ZXZlciBmb2xsb3dzIHRoZSBncmlkIGluaGVyaXRzIHRoYXQgcHVsbC5cbiAqICAgVGhlIGRyb3Bkb3duIHJvb3QgaXMgbWFya2VkIGBkYXRhLWFpYS1oYXMtcHJvZHVjdHNgIGFuZCB0aGUgYXBwZWFyYW5jZVxuICogICBsYXllciB6ZXJvZXMgdGhlIGJhbmQgYXQgaXRzIHNvdXJjZSByYXRoZXIgdGhhbiB0aGUgc3RyaXAgY2FuY2VsbGluZyBpdFxuICogICBmcm9tIGhlcmUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaWEtcHJvZHVjdC1zdHJpcFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U3RyaXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb2R1Y3RzOiBQcm9kdWN0W10gPSBbXTtcbiAgLyoqIFNjb3BlcyB0aGUgc2VjdGlvbiBsYWJlbCdzIGlkIHRvIHRoZSBvd25pbmcgbGlzdGJveC4gKi9cbiAgQElucHV0KCkgbGlzdGJveElkID0gXCJcIjtcbiAgLyoqXG4gICAqIEZhbHNlIHdoaWxlIHRoZSBwYW5lbCBpcyBmYWRpbmcgb3V0LiBUaGUgY2xvc2VkIGRyb3Bkb3duIGtlZXBzIHJlbmRlcmluZ1xuICAgKiBpdHMgbGFzdCBjb250ZW50IGZvciB0aGUgZmFkZSwgYW5kIGZvY3VzYWJsZSBjYXJkcyBpbnNpZGUgaXQgd291bGQgc3RpbGxcbiAgICogYW5zd2VyIFRhYi5cbiAgICovXG4gIEBJbnB1dCgpIGZvY3VzYWJsZSA9IHRydWU7XG4gIC8qKiBIb3cgdGhlIGNhcmRzIGxheSBvdXQg4oCUIGEgc2Nyb2xsaW5nIHJvdywgb3Igc3RhY2tlZCBhcyBmdWxsLXdpZHRoIHJvd3MuIERlZmF1bHQ6IFwicm93XCIuICovXG4gIEBJbnB1dCgpIGxheW91dDogUHJvZHVjdHNMYXlvdXQgPSBcInJvd1wiO1xuICBASW5wdXQoKSBpbWFnZUZhbGxiYWNrOiBQcm9kdWN0SW1hZ2VGYWxsYmFjayA9IFwiaW1hZ2VcIjtcbiAgcmVhZG9ubHkgaW5pdGlhbCA9IHByb2R1Y3RJbml0aWFsO1xuICBwcml2YXRlIHJlYWRvbmx5IGZhaWxlZEltYWdlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3Qgc291cmNlcyA9IG5ldyBNYXAodGhpcy5wcm9kdWN0cy5tYXAoKHByb2R1Y3QpID0+IFtwcm9kdWN0LmlkLCBwcm9kdWN0LmltYWdlVXJsPy50cmltKCldKSk7XG4gICAgZm9yIChjb25zdCBbaWQsIHNyY10gb2YgdGhpcy5mYWlsZWRJbWFnZXMpIHtcbiAgICAgIGlmIChzb3VyY2VzLmdldChpZCkgIT09IHNyYykgdGhpcy5mYWlsZWRJbWFnZXMuZGVsZXRlKGlkKTtcbiAgICB9XG4gIH1cblxuICBpbWFnZVNvdXJjZShwcm9kdWN0OiBQcm9kdWN0KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qgc3JjID0gcHJvZHVjdC5pbWFnZVVybD8udHJpbSgpO1xuICAgIHJldHVybiBzcmMgJiYgdGhpcy5mYWlsZWRJbWFnZXMuZ2V0KHByb2R1Y3QuaWQpICE9PSBzcmMgPyBzcmMgOiBudWxsO1xuICB9XG5cbiAgb25JbWFnZUVycm9yKHByb2R1Y3Q6IFByb2R1Y3QpOiB2b2lkIHtcbiAgICBjb25zdCBzcmMgPSBwcm9kdWN0LmltYWdlVXJsPy50cmltKCk7XG4gICAgaWYgKHNyYykgdGhpcy5mYWlsZWRJbWFnZXMuc2V0KHByb2R1Y3QuaWQsIHNyYyk7XG4gIH1cblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9kdWN0PigpO1xuICAvKipcbiAgICogRm9jdXMgbW92ZWQgaW50byAvIG91dCBvZiB0aGUgc3RyaXAuIFRoZSBwYW5lbCBjbG9zZXMgb24gYmx1ciBieSBkZWZhdWx0XG4gICAqIGFuZCB0aGUgZWRpdG9yIGJsdXJzIHRoZSBtb21lbnQgYSBjYXJkIHRha2VzIGZvY3VzLCBzbyB0aGUgZHJvcGRvd25cbiAgICogcmVwb3J0cyBmb2N1cyBhcyBzdGlsbC1pbnNpZGUgcmF0aGVyIHRoYW4gc2h1dHRpbmcgb3V0IGZyb20gdW5kZXIgdGhlIGNhcmRcbiAgICogdGhlIHVzZXIganVzdCB0YWJiZWQgdG8uXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZm9jdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBkZXRhY2hXaGVlbDogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgbW91c2Ugd2hlZWwgb3ZlciB0aGUgcm93IHNjcm9sbHMgaXQgc2lkZXdheXMuIFRoZSByb3cgc2l0cyBpbnNpZGUgdGhlXG4gICAqIHNlY3Rpb24ncyBgKm5nSWZgLCBzbyB0aGUgcXVlcnkgZmlyZXMgd2l0aCB0aGUgZWxlbWVudCBhcyBwcm9kdWN0cyBhcnJpdmVcbiAgICogYW5kIHdpdGggYHVuZGVmaW5lZGAgYXMgdGhleSBnbzsgdGhlIGJpbmRpbmcgZm9sbG93cyBpdCBlaXRoZXIgd2F5LlxuICAgKi9cbiAgQFZpZXdDaGlsZChcInJvd1wiKVxuICBzZXQgcm93KHJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmRldGFjaFdoZWVsPy4oKTtcbiAgICB0aGlzLmRldGFjaFdoZWVsID0gcmVmID8gYXR0YWNoUHJvZHVjdFJvd1doZWVsKHJlZi5uYXRpdmVFbGVtZW50KSA6IG51bGw7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFjaFdoZWVsPy4oKTtcbiAgICB0aGlzLmRldGFjaFdoZWVsID0gbnVsbDtcbiAgfVxuXG4gIGdldCBsYWJlbElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGlzdGJveElkfS1wcm9kdWN0cy1sYWJlbGA7XG4gIH1cblxuICBjYXJkSWQoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGlzdGJveElkfS1wcm9kdWN0LSR7aW5kZXh9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGl0eSAqYW5kKiBjb250ZW50OiBhIHNhbWUtaWQgcmVzdWx0IHdob3NlIGZpZWxkcyBjaGFuZ2VkIG11c3RcbiAgICogcmUtcmVuZGVyIHJhdGhlciB0aGFuIHJldXNlIHRoZSBwcmV2aW91cyBjYXJkJ3MgYmluZGluZ3MuXG4gICAqL1xuICB0cmFja0J5UHJvZHVjdCA9IChfOiBudW1iZXIsIHByb2R1Y3Q6IFByb2R1Y3QpOiBzdHJpbmcgPT5cbiAgICBbXG4gICAgICBwcm9kdWN0LmlkLFxuICAgICAgcHJvZHVjdC50aXRsZSxcbiAgICAgIHByb2R1Y3QudXJsID8/IFwiXCIsXG4gICAgICBwcm9kdWN0LmltYWdlVXJsID8/IFwiXCIsXG4gICAgICBwcm9kdWN0LnByaWNlID8/IFwiXCIsXG4gICAgICBwcm9kdWN0LnZlbmRvciA/PyBcIlwiLFxuICAgICAgcHJvZHVjdC5hdmFpbGFibGUgPT09IGZhbHNlID8gXCJzb2xkLW91dFwiIDogXCJcIixcbiAgICBdLmpvaW4oXCJcXDBcIik7XG5cbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCk6IHZvaWQge1xuICAgIC8vIExldCB0aGUgYnJvd3NlciBrZWVwIHRoZSBjbGlja3MgdGhhdCBtZWFuIFwib3BlbiB0aGlzIHNvbWV3aGVyZSBlbHNlXCIg4oCUXG4gICAgLy8gaW50ZXJjZXB0aW5nIHRoZW0gd291bGQgZGVmZWF0IHRoZSBwb2ludCBvZiByZW5kZXJpbmcgYW4gPGE+LiBUaG9zZSBhcmVcbiAgICAvLyBuYXZpZ2F0aW9ucyB0aGUgdXNlciBhc2tlZCBmb3IgZXhwbGljaXRseSwgc28gdGhleSBkb24ndCBlbWl0LlxuICAgIGlmIChldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc2VsZWN0LmVtaXQocHJvZHVjdCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb2R1Y3Q6IFByb2R1Y3QpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSBcIkVudGVyXCIgJiYgZXZlbnQua2V5ICE9PSBcIiBcIikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChwcm9kdWN0KTtcbiAgfVxuXG4gIG9uQ2FyZEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIG9uQ2FyZEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKG5leHQ/LmNsb3Nlc3QoXCJbZGF0YS1haWEtZHJvcGRvd25dXCIpKSByZXR1cm47XG4gICAgdGhpcy5mb2N1c0NoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiPCEtLSBgZ3JvdXBgIGlzIHRoZSBvbmUgcm9sZSBhIGxpc3Rib3ggYWNjZXB0cyBhcm91bmQgYSBzZXQgb2Ygb3B0aW9ucywgc28gdGhlXG4gICAgIHN0cmlwIHN0YXlzIGluc2lkZSB0aGUgbGlzdGJveCB3aXRob3V0IGJyZWFraW5nIGl0cyBjb250ZW50IG1vZGVsLiAtLT5cbjxzZWN0aW9uXG4gICpuZ0lmPVwicHJvZHVjdHMubGVuZ3RoID4gMFwiXG4gIGNsYXNzPVwiYWlhLXByb2R1Y3RzXCJcbiAgZGF0YS1haWEtcHJvZHVjdHM9XCJcIlxuICBbYXR0ci5kYXRhLWFpYS1wcm9kdWN0cy1sYXlvdXRdPVwibGF5b3V0XCJcbiAgcm9sZT1cImdyb3VwXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsSWRcIlxuPlxuICA8IS0tIGRhdGEtYWlhLXByb2R1Y3RzLWxhYmVsOiB0aGUgc2Nyb2xsIGFycm93IGNlbnRyZXMgaXRzZWxmIG9uIHRoaXMgcm93LiAtLT5cbiAgPGRpdiBjbGFzcz1cImFpYS1wcm9kdWN0cy1sYWJlbFwiIFtpZF09XCJsYWJlbElkXCIgZGF0YS1haWEtcHJvZHVjdHMtbGFiZWw9XCJcIj5Qcm9kdWN0czwvZGl2PlxuXG4gIDwhLS0gI3JvdzogdGhlIGNvbXBvbmVudCBiaW5kcyB3aGVlbC10by1zaWRld2F5cyBzY3JvbGxpbmcgb24gaXQuIC0tPlxuICA8ZGl2ICNyb3cgY2xhc3M9XCJhaWEtcHJvZHVjdHMtcm93XCIgZGF0YS1haWEtcHJvZHVjdHMtcm93PVwiXCI+XG4gICAgPCEtLSBBIHJlYWwgPGEgaHJlZj4gcmF0aGVyIHRoYW4gYSA8ZGl2PjogaXQga2VlcHMgdGhlIGJyb3dzZXIncyBvd24gbGlua1xuICAgICAgICAgYWZmb3JkYW5jZXMg4oCUIGNtZC9jdHJsLWNsaWNrIGZvciBhIG5ldyB0YWIsIG1pZGRsZS1jbGljaywgcmlnaHQtY2xpY2sg4oaSXG4gICAgICAgICBcImNvcHkgbGluayBhZGRyZXNzXCIuIHJvbGU9XCJvcHRpb25cIiBvdmVycmlkZXMgaG93IGFzc2lzdGl2ZSB0ZWNoXG4gICAgICAgICBhbm5vdW5jZXMgaXQsIHdoaWNoIGlzIGNvcnJlY3QgaW5zaWRlIGEgbGlzdGJveDsgdGhlIGRlbGliZXJhdGUgdHJhZGVcbiAgICAgICAgIGlzIHRoYXQgQVQgbm8gbG9uZ2VyIGNhbGxzIGl0IGEgbGluay4gQW4gYXR0cmlidXRlIGJpbmRpbmcsIHNvIGFcbiAgICAgICAgIHByb2R1Y3Qgd2l0aG91dCBhIHVybCBnZXRzIG5vIGhyZWYgYXQgYWxsIHJhdGhlciB0aGFuIFwibnVsbFwiLiAtLT5cbiAgICA8YVxuICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlQcm9kdWN0XCJcbiAgICAgIFtpZF09XCJjYXJkSWQoaSlcIlxuICAgICAgY2xhc3M9XCJhaWEtcHJvZHVjdFwiXG4gICAgICBkYXRhLWFpYS1wcm9kdWN0PVwiXCJcbiAgICAgIFthdHRyLmRhdGEtYWlhLXByb2R1Y3Qtc29sZC1vdXRdPVwicHJvZHVjdC5hdmFpbGFibGUgPT09IGZhbHNlID8gJycgOiBudWxsXCJcbiAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJmYWxzZVwiXG4gICAgICBbYXR0ci5ocmVmXT1cInByb2R1Y3QudXJsID8/IG51bGxcIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgcHJvZHVjdClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgcHJvZHVjdClcIlxuICAgICAgKGZvY3VzKT1cIm9uQ2FyZEZvY3VzKClcIlxuICAgICAgKGJsdXIpPVwib25DYXJkQmx1cigkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImFpYS1wcm9kdWN0LW1lZGlhXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuZGF0YS1haWEtcHJvZHVjdC1wbGFjZWhvbGRlcl09XCIhaW1hZ2VTb3VyY2UocHJvZHVjdCkgJiYgaW1hZ2VGYWxsYmFjayA9PT0gJ2ltYWdlJyA/ICcnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmRhdGEtYWlhLXByb2R1Y3QtaW5pdGlhbF09XCIhaW1hZ2VTb3VyY2UocHJvZHVjdCkgJiYgaW1hZ2VGYWxsYmFjayA9PT0gJ2luaXRpYWwnID8gJycgOiBudWxsXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBhbHQ9XCJcIiBvbiBwdXJwb3NlOiB0aGUgdGl0bGUgaXMgYWxyZWFkeSB0aGUgY2FyZCdzIGFjY2Vzc2libGVcbiAgICAgICAgICAgICBuYW1lLCBhbmQgcmVwZWF0aW5nIGl0IHdvdWxkIGhhdmUgYSBzY3JlZW4gcmVhZGVyIHJlYWQgaXQgdHdpY2UuIC0tPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJpbWFnZVNvdXJjZShwcm9kdWN0KSBhcyBzcmNcIlxuICAgICAgICAgIGNsYXNzPVwiYWlhLXByb2R1Y3QtaW1hZ2VcIlxuICAgICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKHByb2R1Y3QpXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICBkZWNvZGluZz1cImFzeW5jXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbWFnZVNvdXJjZShwcm9kdWN0KSAmJiBpbWFnZUZhbGxiYWNrID09PSAnaW5pdGlhbCdcIj57eyBpbml0aWFsKHByb2R1Y3QudGl0bGUpIH19PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gRXZlcnkgZmllbGQgYnV0IHRoZSB0aXRsZSBpcyBvcHRpb25hbCwgc28gYWJzZW50IG9uZXMgcmVuZGVyIG5vXG4gICAgICAgICAgIGVsZW1lbnQgYXQgYWxsIOKAlCB0aGUgY29sdW1uIGdhcCBjYW4ndCBsZWF2ZSBhIGhvbGUgZm9yIGEgYm94IHRoYXRcbiAgICAgICAgICAgaXNuJ3QgdGhlcmUuIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhaWEtcHJvZHVjdC1ib2R5XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC52ZW5kb3JcIiBjbGFzcz1cImFpYS1wcm9kdWN0LXZlbmRvclwiPnt7IHByb2R1Y3QudmVuZG9yIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFpYS1wcm9kdWN0LXRpdGxlXCI+e3sgcHJvZHVjdC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LnByaWNlXCIgY2xhc3M9XCJhaWEtcHJvZHVjdC1wcmljZVwiPnt7IHByb2R1Y3QucHJpY2UgfX08L3NwYW4+XG4gICAgICAgIDwhLS0gSW4gdGhlIHRleHQgY29sdW1uIHJhdGhlciB0aGFuIHRoZSBhcmlhLWhpZGRlbiBtZWRpYSB0aWxlLCBzbyB0aGVcbiAgICAgICAgICAgICBjYXJkJ3MgYWNjZXNzaWJsZSBuYW1lIHNheXMgaXQ7IHRoZSBzdHlsZXNoZWV0IGxpZnRzIGl0IG92ZXIgdGhlXG4gICAgICAgICAgICAgaW1hZ2UuIC0tPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QuYXZhaWxhYmxlID09PSBmYWxzZVwiIGNsYXNzPVwiYWlhLXByb2R1Y3QtYmFkZ2VcIj5Tb2xkIG91dDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -340,6 +340,7 @@ class ProductStripComponent {
|
|
|
340
340
|
(_b = product.imageUrl) !== null && _b !== void 0 ? _b : "",
|
|
341
341
|
(_c = product.price) !== null && _c !== void 0 ? _c : "",
|
|
342
342
|
(_d = product.vendor) !== null && _d !== void 0 ? _d : "",
|
|
343
|
+
product.available === false ? "sold-out" : "",
|
|
343
344
|
].join("\0");
|
|
344
345
|
};
|
|
345
346
|
}
|
|
@@ -409,10 +410,10 @@ class ProductStripComponent {
|
|
|
409
410
|
}
|
|
410
411
|
}
|
|
411
412
|
ProductStripComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProductStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
412
|
-
ProductStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ProductStripComponent, isStandalone: true, selector: "aia-product-strip", inputs: { products: "products", listboxId: "listboxId", focusable: "focusable", layout: "layout", imageFallback: "imageFallback" }, outputs: { select: "select", focusChange: "focusChange" }, viewQueries: [{ propertyName: "row", first: true, predicate: ["row"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
413
|
+
ProductStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ProductStripComponent, isStandalone: true, selector: "aia-product-strip", inputs: { products: "products", listboxId: "listboxId", focusable: "focusable", layout: "layout", imageFallback: "imageFallback" }, outputs: { select: "select", focusChange: "focusChange" }, viewQueries: [{ propertyName: "row", first: true, predicate: ["row"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">Sold out</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
413
414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProductStripComponent, decorators: [{
|
|
414
415
|
type: Component,
|
|
415
|
-
args: [{ selector: "aia-product-strip", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}\n"] }]
|
|
416
|
+
args: [{ selector: "aia-product-strip", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">Products</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">Sold out</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:cover}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"] }]
|
|
416
417
|
}], propDecorators: { products: [{
|
|
417
418
|
type: Input
|
|
418
419
|
}], listboxId: [{
|