@daffodil/design 0.40.1 → 0.42.1

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.
Files changed (110) hide show
  1. package/atoms/form/quantity-field/quantity-field.component.d.ts +1 -1
  2. package/atoms/form/quantity-field/quantity-input/quantity-input.component.d.ts +1 -1
  3. package/atoms/form/quantity-field/quantity-select/quantity-select.component.d.ts +1 -0
  4. package/daff-theme.scss +27 -21
  5. package/esm2020/atoms/button/button.component.mjs +1 -1
  6. package/esm2020/atoms/form/checkbox/checkbox.component.mjs +1 -1
  7. package/esm2020/atoms/form/input/input.component.mjs +1 -1
  8. package/esm2020/atoms/form/quantity-field/quantity-field.component.mjs +4 -3
  9. package/esm2020/atoms/form/quantity-field/quantity-input/quantity-input.component.mjs +4 -6
  10. package/esm2020/atoms/form/quantity-field/quantity-select/quantity-select.component.mjs +6 -3
  11. package/esm2020/atoms/form/radio/radio.component.mjs +1 -1
  12. package/esm2020/atoms/form/select/select/select.component.mjs +1 -1
  13. package/esm2020/atoms/image/image.component.mjs +1 -1
  14. package/esm2020/atoms/loading-icon/loading-icon.component.mjs +1 -1
  15. package/esm2020/atoms/progress-indicator/animation/progress-indicator-animation.mjs +1 -1
  16. package/esm2020/checkbox/examples/basic-checkbox/basic-checkbox.component.mjs +1 -1
  17. package/esm2020/checkbox/examples/checkbox-set/checkbox-set.component.mjs +1 -1
  18. package/esm2020/core/article-encapsulated/article-encapsulated-mixin.mjs +1 -1
  19. package/esm2020/core/breakpoints/breakpoints.mjs +1 -1
  20. package/esm2020/core/colorable/colorable-mixin.mjs +1 -1
  21. package/esm2020/core/colorable/colorable.mjs +1 -1
  22. package/esm2020/core/compactable/compactable-mixin.mjs +1 -1
  23. package/esm2020/core/compactable/compactable.mjs +1 -1
  24. package/esm2020/core/manage-container-layout/manage-container-layout-mixin.mjs +1 -1
  25. package/esm2020/core/mutable/mutable.mjs +1 -1
  26. package/esm2020/core/sizeable/sizeable-mixin.mjs +1 -1
  27. package/esm2020/core/sizeable/sizeable.mjs +1 -1
  28. package/esm2020/core/skeletonable/skeletonable.mjs +1 -1
  29. package/esm2020/core/statusable/statusable.mjs +1 -1
  30. package/esm2020/core/text-alignable/text-alignable.mjs +1 -1
  31. package/esm2020/core/theming/services/class-setter/theme-class-setter.service.mjs +1 -1
  32. package/esm2020/core/theming/services/os-theme/ostheme.service.mjs +1 -1
  33. package/esm2020/core/theming/services/storage/theme-storage.service.mjs +5 -3
  34. package/esm2020/core/theming/services/theming.service.mjs +1 -1
  35. package/esm2020/core/theming/types/theme.mjs +1 -1
  36. package/esm2020/image/examples/basic-image/basic-image.component.mjs +12 -0
  37. package/esm2020/image/examples/basic-image/basic-image.module.mjs +26 -0
  38. package/esm2020/image/examples/daffodil-design-image-examples.mjs +5 -0
  39. package/esm2020/image/examples/index.mjs +2 -0
  40. package/esm2020/image/examples/load-image/load-image.component.mjs +19 -0
  41. package/esm2020/image/examples/load-image/load-image.module.mjs +30 -0
  42. package/esm2020/image/examples/public_api.mjs +9 -0
  43. package/esm2020/molecules/accordion/accordion-item/accordion-item.component.mjs +1 -1
  44. package/esm2020/molecules/accordion/nav-accordion-item/nav-accordion-item.component.mjs +1 -1
  45. package/esm2020/molecules/article/article/article.component.mjs +2 -2
  46. package/esm2020/molecules/callout/callout/callout.component.mjs +1 -1
  47. package/esm2020/molecules/callout/callout-subtitle/callout-subtitle.directive.mjs +1 -1
  48. package/esm2020/molecules/hero/hero/hero.component.mjs +1 -1
  49. package/esm2020/molecules/media-gallery/media-gallery-registration.interface.mjs +1 -1
  50. package/esm2020/molecules/media-gallery/media-gallery.component.mjs +1 -1
  51. package/esm2020/molecules/media-gallery/media-renderer/media-renderer.component.mjs +1 -1
  52. package/esm2020/molecules/media-gallery/registry/media-gallery.registry.mjs +1 -1
  53. package/esm2020/molecules/media-gallery/thumbnail/thumbnail-registration.interface.mjs +1 -1
  54. package/esm2020/molecules/media-gallery/thumbnail/thumbnail.directive.mjs +1 -1
  55. package/esm2020/molecules/modal/animations/modal-animation.mjs +1 -1
  56. package/esm2020/molecules/modal/modal/modal.component.mjs +1 -1
  57. package/esm2020/molecules/modal/modal.mjs +1 -1
  58. package/esm2020/molecules/modal/service/modal.service.mjs +1 -1
  59. package/esm2020/molecules/paginator/paginator.component.mjs +1 -1
  60. package/esm2020/molecules/qty-dropdown/qty-dropdown.component.mjs +1 -1
  61. package/esm2020/molecules/sidebar/animation/sidebar-animation.mjs +1 -1
  62. package/esm2020/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +1 -1
  63. package/esm2020/quantity-field/examples/{basic → basic-quantity-field}/basic-quantity-field.component.mjs +1 -1
  64. package/esm2020/quantity-field/examples/{basic → basic-quantity-field}/basic-quantity-field.module.mjs +1 -1
  65. package/esm2020/quantity-field/examples/{customRange → custom-range-quantity-field}/custom-range-quantity-field.component.mjs +1 -1
  66. package/esm2020/quantity-field/examples/{customRange → custom-range-quantity-field}/custom-range-quantity-field.module.mjs +1 -1
  67. package/esm2020/quantity-field/examples/{disabled → disabled-quantity-field}/disabled-quantity-field.component.mjs +2 -2
  68. package/esm2020/quantity-field/examples/{disabled → disabled-quantity-field}/disabled-quantity-field.module.mjs +1 -1
  69. package/esm2020/quantity-field/examples/public_api.mjs +16 -10
  70. package/esm2020/quantity-field/examples/{selectMax → select-max-quantity-field}/select-max-quantity-field.component.mjs +1 -1
  71. package/esm2020/quantity-field/examples/{selectMax → select-max-quantity-field}/select-max-quantity-field.module.mjs +1 -1
  72. package/esm2020/radio/examples/basic-radio/basic-radio.component.mjs +1 -1
  73. package/fesm2015/daffodil-design-checkbox-examples.mjs.map +1 -1
  74. package/fesm2015/daffodil-design-image-examples.mjs +89 -0
  75. package/fesm2015/daffodil-design-image-examples.mjs.map +1 -0
  76. package/fesm2015/daffodil-design-quantity-field-examples.mjs +8 -8
  77. package/fesm2015/daffodil-design-quantity-field-examples.mjs.map +1 -1
  78. package/fesm2015/daffodil-design-radio-examples.mjs.map +1 -1
  79. package/fesm2015/daffodil-design.mjs +18 -12
  80. package/fesm2015/daffodil-design.mjs.map +1 -1
  81. package/fesm2020/daffodil-design-checkbox-examples.mjs.map +1 -1
  82. package/fesm2020/daffodil-design-image-examples.mjs +89 -0
  83. package/fesm2020/daffodil-design-image-examples.mjs.map +1 -0
  84. package/fesm2020/daffodil-design-quantity-field-examples.mjs +8 -8
  85. package/fesm2020/daffodil-design-quantity-field-examples.mjs.map +1 -1
  86. package/fesm2020/daffodil-design-radio-examples.mjs.map +1 -1
  87. package/fesm2020/daffodil-design.mjs +16 -12
  88. package/fesm2020/daffodil-design.mjs.map +1 -1
  89. package/image/examples/basic-image/basic-image.component.d.ts +5 -0
  90. package/image/examples/basic-image/basic-image.module.d.ts +8 -0
  91. package/image/examples/daffodil-design-image-examples.d.ts +5 -0
  92. package/image/examples/index.d.ts +1 -0
  93. package/image/examples/load-image/load-image.component.d.ts +7 -0
  94. package/image/examples/load-image/load-image.module.d.ts +9 -0
  95. package/image/examples/package.json +10 -0
  96. package/image/examples/public_api.d.ts +2 -0
  97. package/package.json +10 -2
  98. package/quantity-field/examples/{basic → basic-quantity-field}/basic-quantity-field.component.d.ts +0 -0
  99. package/quantity-field/examples/{basic → basic-quantity-field}/basic-quantity-field.module.d.ts +0 -0
  100. package/quantity-field/examples/{customRange → custom-range-quantity-field}/custom-range-quantity-field.component.d.ts +0 -0
  101. package/quantity-field/examples/{customRange → custom-range-quantity-field}/custom-range-quantity-field.module.d.ts +0 -0
  102. package/quantity-field/examples/{disabled → disabled-quantity-field}/disabled-quantity-field.component.d.ts +0 -0
  103. package/quantity-field/examples/{disabled → disabled-quantity-field}/disabled-quantity-field.module.d.ts +0 -0
  104. package/quantity-field/examples/public_api.d.ts +10 -9
  105. package/quantity-field/examples/{selectMax → select-max-quantity-field}/select-max-quantity-field.component.d.ts +0 -0
  106. package/quantity-field/examples/{selectMax → select-max-quantity-field}/select-max-quantity-field.module.d.ts +0 -0
  107. package/src/atoms/form/quantity-field/README.md +14 -15
  108. package/src/atoms/image/README.md +17 -7
  109. package/esm2020/quantity-field/examples/examples.mjs +0 -11
  110. package/quantity-field/examples/examples.d.ts +0 -2
@@ -1521,10 +1521,12 @@ class DaffQuantityInputComponent {
1521
1521
  * Instead, we listen for the change event and manually patch form control values.
1522
1522
  */
1523
1523
  this._inputControl = new FormControl();
1524
- // TODO: should this not use this.input as the source of truth for focused?
1525
- this.focused = false;
1526
1524
  this._destroyed = new Subject();
1527
1525
  }
1526
+ get focused() {
1527
+ var _a;
1528
+ return (_a = this.input) === null || _a === void 0 ? void 0 : _a.focused;
1529
+ }
1528
1530
  get value() {
1529
1531
  return this.ngControl.control.value;
1530
1532
  }
@@ -1548,15 +1550,12 @@ class DaffQuantityInputComponent {
1548
1550
  this._destroyed.next(true);
1549
1551
  }
1550
1552
  focus() {
1551
- this.focused = true;
1552
1553
  this.input.focus();
1553
1554
  }
1554
1555
  onFocus() {
1555
- this.focused = true;
1556
1556
  this.ngControl.control.markAsTouched();
1557
1557
  }
1558
1558
  onBlur() {
1559
- // TODO: this.focused = false ?
1560
1559
  if (this.value === null || this.value === undefined) {
1561
1560
  this.value = 1;
1562
1561
  this.changeDetectorRef.markForCheck();
@@ -1641,6 +1640,9 @@ class DaffQuantitySelectComponent {
1641
1640
  focus() {
1642
1641
  this.select.focus();
1643
1642
  }
1643
+ onFocus() {
1644
+ this.ngControl.control.markAsTouched();
1645
+ }
1644
1646
  /**
1645
1647
  * A helper function for easily making options for the `select`.
1646
1648
  */
@@ -1649,10 +1651,10 @@ class DaffQuantitySelectComponent {
1649
1651
  }
1650
1652
  }
1651
1653
  /** @nocollapse */ /** @nocollapse */ DaffQuantitySelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffQuantitySelectComponent, deps: [{ token: i1$2.NgControl }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1652
- /** @nocollapse */ /** @nocollapse */ DaffQuantitySelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffQuantitySelectComponent, selector: "daff-quantity-select", inputs: { min: "min", max: "max", extendable: "extendable" }, viewQueries: [{ propertyName: "select", first: true, predicate: DaffNativeSelectComponent, descendants: true }], ngImport: i0, template: "<select daff-native-select [formControl]=\"ngControl.control\">\n <option *ngFor=\"let item of valueArray\" [value]=\"item\">{{ item }}</option>\n <option [value]=\"max\" *ngIf=\"extendable\">{{ max }}+</option>\n <option [value]=\"max\" *ngIf=\"!extendable\">{{ max }}</option>\n</select>\n", components: [{ type: DaffNativeSelectComponent, selector: "select[daff-native-select]", inputs: ["formSubmitted"] }], directives: [{ type: i1$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1654
+ /** @nocollapse */ /** @nocollapse */ DaffQuantitySelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffQuantitySelectComponent, selector: "daff-quantity-select", inputs: { min: "min", max: "max", extendable: "extendable" }, viewQueries: [{ propertyName: "select", first: true, predicate: DaffNativeSelectComponent, descendants: true }], ngImport: i0, template: "<select daff-native-select\n [formControl]=\"ngControl.control\"\n (focus)=\"onFocus()\"\n>\n <option *ngFor=\"let item of valueArray\" [value]=\"item\">{{ item }}</option>\n <option [value]=\"max\" *ngIf=\"extendable\">{{ max }}+</option>\n <option [value]=\"max\" *ngIf=\"!extendable\">{{ max }}</option>\n</select>\n", components: [{ type: DaffNativeSelectComponent, selector: "select[daff-native-select]", inputs: ["formSubmitted"] }], directives: [{ type: i1$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1653
1655
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffQuantitySelectComponent, decorators: [{
1654
1656
  type: Component,
1655
- args: [{ selector: 'daff-quantity-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<select daff-native-select [formControl]=\"ngControl.control\">\n <option *ngFor=\"let item of valueArray\" [value]=\"item\">{{ item }}</option>\n <option [value]=\"max\" *ngIf=\"extendable\">{{ max }}+</option>\n <option [value]=\"max\" *ngIf=\"!extendable\">{{ max }}</option>\n</select>\n" }]
1657
+ args: [{ selector: 'daff-quantity-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<select daff-native-select\n [formControl]=\"ngControl.control\"\n (focus)=\"onFocus()\"\n>\n <option *ngFor=\"let item of valueArray\" [value]=\"item\">{{ item }}</option>\n <option [value]=\"max\" *ngIf=\"extendable\">{{ max }}+</option>\n <option [value]=\"max\" *ngIf=\"!extendable\">{{ max }}</option>\n</select>\n" }]
1656
1658
  }], ctorParameters: function () { return [{ type: i1$2.NgControl }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { select: [{
1657
1659
  type: ViewChild,
1658
1660
  args: [DaffNativeSelectComponent]
@@ -1686,7 +1688,6 @@ class DaffQuantityFieldComponent {
1686
1688
  * before it becomes an input element.
1687
1689
  */
1688
1690
  this.selectMax = 10;
1689
- this.focused = false;
1690
1691
  this.disabled = false;
1691
1692
  this._quantity = 1;
1692
1693
  this._inputHasBeenShown = false;
@@ -1694,6 +1695,10 @@ class DaffQuantityFieldComponent {
1694
1695
  this.ngControl.valueAccessor = this;
1695
1696
  }
1696
1697
  }
1698
+ get focused() {
1699
+ var _a, _b;
1700
+ return !!(((_a = this.input) === null || _a === void 0 ? void 0 : _a.focused) || ((_b = this.select) === null || _b === void 0 ? void 0 : _b.focused));
1701
+ }
1697
1702
  get quantity() {
1698
1703
  return this._quantity;
1699
1704
  }
@@ -1748,7 +1753,6 @@ class DaffQuantityFieldComponent {
1748
1753
  if (this.input) {
1749
1754
  this.input.focus();
1750
1755
  }
1751
- this.focused = true;
1752
1756
  }
1753
1757
  }
1754
1758
  /** @nocollapse */ /** @nocollapse */ DaffQuantityFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffQuantityFieldComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
@@ -2639,10 +2643,10 @@ class DaffArticleComponent {
2639
2643
  }
2640
2644
  }
2641
2645
  /** @nocollapse */ /** @nocollapse */ DaffArticleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffArticleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2642
- /** @nocollapse */ /** @nocollapse */ DaffArticleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffArticleComponent, selector: "daff-article", host: { properties: { "class.daff-article": "this.class", "attr.role": "this.role" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".daff-article{display:block}.daff-article a:not(.daff-ae *,.daff-ae){font-weight:600;text-decoration:none}.daff-article a:not(.daff-ae *,.daff-ae):hover{text-decoration:underline}.daff-article h1:not(.daff-ae *,.daff-ae),.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-bottom:.5rem}.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-top:2rem}.daff-article h1:not(.daff-ae *,.daff-ae){font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article h1:not(.daff-ae *,.daff-ae){font-size:3rem;line-height:3.5rem}}.daff-article h2:not(.daff-ae *,.daff-ae){font-size:2rem;line-height:2.5rem}.daff-article h3:not(.daff-ae *,.daff-ae){font-size:1.5rem;line-height:2rem}.daff-article h4:not(.daff-ae *,.daff-ae){font-size:1.25rem;line-height:1.5rem}.daff-article h5:not(.daff-ae *,.daff-ae){font-size:1.125rem;line-height:1.5rem}.daff-article h6:not(.daff-ae *,.daff-ae){font-size:1rem;line-height:1.5rem}.daff-article p:not(.daff-ae *,.daff-ae){margin:0 0 1rem}.daff-article strong{font-weight:700}.daff-article pre{display:block;border-radius:4px;font-size:.875rem;line-height:1.5rem;margin:0;padding:1.5rem;overflow:auto;white-space:pre-wrap}.daff-article pre code{display:block;padding:0}.daff-article code{display:inline-block;border-radius:4px;font-size:.875rem;line-height:1rem;padding:.25rem}.daff-article__title{font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article__title{font-size:3rem;line-height:3.5rem}}.daff-article__lead{font-size:1.25rem;line-height:1.75rem;font-weight:400;margin:0}.daff-article__lead code{font-size:1.25rem;line-height:1.5rem;font-weight:400}.daff-article__meta{font-size:.875rem}.daff-article hr{border:0;height:1px;margin:2rem 0}.daff-article blockquote{border-radius:4px;margin:0;padding:1rem 1.5rem}.daff-article blockquote cite{font-size:.875rem;font-weight:400;line-height:1.25rem;display:block;margin-top:1rem}.daff-article table{display:block;border-collapse:collapse;margin:1.5rem 0;overflow:auto;width:100%}.daff-article table th{font-weight:600;outline:0;padding:1rem;text-align:left;vertical-align:bottom;box-sizing:border-box}.daff-article table td{padding:.5rem 1rem;vertical-align:top;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2646
+ /** @nocollapse */ /** @nocollapse */ DaffArticleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffArticleComponent, selector: "daff-article", host: { properties: { "class.daff-article": "this.class", "attr.role": "this.role" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".daff-article{display:block}.daff-article a:not(.daff-ae *,.daff-ae){font-weight:600;text-decoration:none}.daff-article a:not(.daff-ae *,.daff-ae):hover{text-decoration:underline}.daff-article h1:not(.daff-ae *,.daff-ae),.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-bottom:1.5rem}.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-top:2.5rem}.daff-article h1:not(.daff-ae *,.daff-ae){font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article h1:not(.daff-ae *,.daff-ae){font-size:3rem;line-height:3.5rem}}.daff-article h2:not(.daff-ae *,.daff-ae){font-size:2rem;line-height:2.5rem}.daff-article h3:not(.daff-ae *,.daff-ae){font-size:1.5rem;line-height:2rem}.daff-article h4:not(.daff-ae *,.daff-ae){font-size:1.25rem;line-height:1.5rem}.daff-article h5:not(.daff-ae *,.daff-ae){font-size:1.125rem;line-height:1.5rem}.daff-article h6:not(.daff-ae *,.daff-ae){font-size:1rem;line-height:1.5rem}.daff-article p:not(.daff-ae *,.daff-ae){margin:0 0 1rem}.daff-article strong{font-weight:700}.daff-article pre{display:block;border-radius:4px;font-size:.875rem;line-height:1.5rem;margin:1.5rem 0;padding:1.5rem;overflow:auto;white-space:pre-wrap}.daff-article pre code{display:block;padding:0}.daff-article pre:last-child{margin-bottom:0}.daff-article code{display:inline-block;border-radius:4px;font-size:.875rem;line-height:1rem;padding:.25rem}.daff-article__title{font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article__title{font-size:3rem;line-height:3.5rem}}.daff-article__lead{font-size:1.25rem;line-height:1.75rem;font-weight:400;margin:0}.daff-article__lead code{font-size:1.25rem;line-height:1.5rem;font-weight:400}.daff-article__meta{font-size:.875rem}.daff-article hr{border:0;height:1px;margin:2rem 0}.daff-article blockquote{border-radius:4px;margin:1.5rem 0;padding:1rem 1.5rem}.daff-article blockquote:last-child{margin-bottom:0}.daff-article blockquote cite{font-size:.875rem;font-weight:400;line-height:1.25rem;display:block;margin-top:1rem}.daff-article blockquote p:last-of-type{margin:0}.daff-article table{display:block;border-collapse:collapse;margin:1.5rem 0;overflow:auto;width:100%}.daff-article table:last-child{margin-bottom:0}.daff-article table th{font-weight:600;outline:0;padding:1rem;text-align:left;vertical-align:bottom;box-sizing:border-box}.daff-article table td{padding:.5rem 1rem;vertical-align:top;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2643
2647
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffArticleComponent, decorators: [{
2644
2648
  type: Component,
2645
- args: [{ selector: 'daff-article', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".daff-article{display:block}.daff-article a:not(.daff-ae *,.daff-ae){font-weight:600;text-decoration:none}.daff-article a:not(.daff-ae *,.daff-ae):hover{text-decoration:underline}.daff-article h1:not(.daff-ae *,.daff-ae),.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-bottom:.5rem}.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-top:2rem}.daff-article h1:not(.daff-ae *,.daff-ae){font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article h1:not(.daff-ae *,.daff-ae){font-size:3rem;line-height:3.5rem}}.daff-article h2:not(.daff-ae *,.daff-ae){font-size:2rem;line-height:2.5rem}.daff-article h3:not(.daff-ae *,.daff-ae){font-size:1.5rem;line-height:2rem}.daff-article h4:not(.daff-ae *,.daff-ae){font-size:1.25rem;line-height:1.5rem}.daff-article h5:not(.daff-ae *,.daff-ae){font-size:1.125rem;line-height:1.5rem}.daff-article h6:not(.daff-ae *,.daff-ae){font-size:1rem;line-height:1.5rem}.daff-article p:not(.daff-ae *,.daff-ae){margin:0 0 1rem}.daff-article strong{font-weight:700}.daff-article pre{display:block;border-radius:4px;font-size:.875rem;line-height:1.5rem;margin:0;padding:1.5rem;overflow:auto;white-space:pre-wrap}.daff-article pre code{display:block;padding:0}.daff-article code{display:inline-block;border-radius:4px;font-size:.875rem;line-height:1rem;padding:.25rem}.daff-article__title{font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article__title{font-size:3rem;line-height:3.5rem}}.daff-article__lead{font-size:1.25rem;line-height:1.75rem;font-weight:400;margin:0}.daff-article__lead code{font-size:1.25rem;line-height:1.5rem;font-weight:400}.daff-article__meta{font-size:.875rem}.daff-article hr{border:0;height:1px;margin:2rem 0}.daff-article blockquote{border-radius:4px;margin:0;padding:1rem 1.5rem}.daff-article blockquote cite{font-size:.875rem;font-weight:400;line-height:1.25rem;display:block;margin-top:1rem}.daff-article table{display:block;border-collapse:collapse;margin:1.5rem 0;overflow:auto;width:100%}.daff-article table th{font-weight:600;outline:0;padding:1rem;text-align:left;vertical-align:bottom;box-sizing:border-box}.daff-article table td{padding:.5rem 1rem;vertical-align:top;box-sizing:border-box}\n"] }]
2649
+ args: [{ selector: 'daff-article', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".daff-article{display:block}.daff-article a:not(.daff-ae *,.daff-ae){font-weight:600;text-decoration:none}.daff-article a:not(.daff-ae *,.daff-ae):hover{text-decoration:underline}.daff-article h1:not(.daff-ae *,.daff-ae),.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-bottom:1.5rem}.daff-article h2:not(.daff-ae *,.daff-ae),.daff-article h3:not(.daff-ae *,.daff-ae),.daff-article h4:not(.daff-ae *,.daff-ae),.daff-article h5:not(.daff-ae *,.daff-ae),.daff-article h6:not(.daff-ae *,.daff-ae){margin-top:2.5rem}.daff-article h1:not(.daff-ae *,.daff-ae){font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article h1:not(.daff-ae *,.daff-ae){font-size:3rem;line-height:3.5rem}}.daff-article h2:not(.daff-ae *,.daff-ae){font-size:2rem;line-height:2.5rem}.daff-article h3:not(.daff-ae *,.daff-ae){font-size:1.5rem;line-height:2rem}.daff-article h4:not(.daff-ae *,.daff-ae){font-size:1.25rem;line-height:1.5rem}.daff-article h5:not(.daff-ae *,.daff-ae){font-size:1.125rem;line-height:1.5rem}.daff-article h6:not(.daff-ae *,.daff-ae){font-size:1rem;line-height:1.5rem}.daff-article p:not(.daff-ae *,.daff-ae){margin:0 0 1rem}.daff-article strong{font-weight:700}.daff-article pre{display:block;border-radius:4px;font-size:.875rem;line-height:1.5rem;margin:1.5rem 0;padding:1.5rem;overflow:auto;white-space:pre-wrap}.daff-article pre code{display:block;padding:0}.daff-article pre:last-child{margin-bottom:0}.daff-article code{display:inline-block;border-radius:4px;font-size:.875rem;line-height:1rem;padding:.25rem}.daff-article__title{font-weight:700;font-size:2rem;line-height:2.25rem}@media (min-width: 768px){.daff-article__title{font-size:3rem;line-height:3.5rem}}.daff-article__lead{font-size:1.25rem;line-height:1.75rem;font-weight:400;margin:0}.daff-article__lead code{font-size:1.25rem;line-height:1.5rem;font-weight:400}.daff-article__meta{font-size:.875rem}.daff-article hr{border:0;height:1px;margin:2rem 0}.daff-article blockquote{border-radius:4px;margin:1.5rem 0;padding:1rem 1.5rem}.daff-article blockquote:last-child{margin-bottom:0}.daff-article blockquote cite{font-size:.875rem;font-weight:400;line-height:1.25rem;display:block;margin-top:1rem}.daff-article blockquote p:last-of-type{margin:0}.daff-article table{display:block;border-collapse:collapse;margin:1.5rem 0;overflow:auto;width:100%}.daff-article table:last-child{margin-bottom:0}.daff-article table th{font-weight:600;outline:0;padding:1rem;text-align:left;vertical-align:bottom;box-sizing:border-box}.daff-article table td{padding:.5rem 1rem;vertical-align:top;box-sizing:border-box}\n"] }]
2646
2650
  }], propDecorators: { class: [{
2647
2651
  type: HostBinding,
2648
2652
  args: ['class.daff-article']
@@ -5223,7 +5227,9 @@ class DaffThemeStorageService {
5223
5227
  this.storage = storage;
5224
5228
  this.storage$ = new Subject();
5225
5229
  this.doc = _doc;
5226
- this.theme$ = merge(this.storage$, fromEvent(this.doc.defaultView, 'storage').pipe(startWith(storageEventBuilder(this.storage.getItem(THEME_STORAGE_KEY))), catchError((e) => EMPTY))).pipe(filter((e) => e.key === THEME_STORAGE_KEY), map((e) => coerceValue(e.newValue)), shareReplay(1));
5230
+ this.theme$ = merge(this.storage$, this.doc.defaultView
5231
+ ? fromEvent(this.doc.defaultView, 'storage').pipe(startWith(storageEventBuilder(this.storage.getItem(THEME_STORAGE_KEY))), catchError((e) => EMPTY))
5232
+ : of(storageEventBuilder(this.storage.getItem(THEME_STORAGE_KEY)))).pipe(filter((e) => e.key === THEME_STORAGE_KEY), map((e) => coerceValue(e.newValue)), shareReplay(1));
5227
5233
  }
5228
5234
  /**
5229
5235
  * Given that Safari doesn't respect in-tab storage events, we have to manually