@angular/material 19.0.0-next.1 → 19.0.0-next.2
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/_index.scss +3 -4
- package/button/_button-base.scss +2 -2
- package/button/index.d.ts +2 -10
- package/checkbox/index.d.ts +0 -7
- package/chips/index.d.ts +1 -10
- package/core/_core.scss +1 -7
- package/core/focus-indicators/_private.scss +20 -81
- package/core/index.d.ts +8 -10
- package/core/style/_elevation.scss +1 -1
- package/core/theming/_palettes.scss +132 -45
- package/core/tokens/_m3-system.scss +93 -20
- package/core/tokens/m3/mat/_sidenav.scss +0 -1
- package/fesm2022/button.mjs +16 -27
- package/fesm2022/button.mjs.map +1 -1
- package/fesm2022/checkbox.mjs +2 -5
- package/fesm2022/checkbox.mjs.map +1 -1
- package/fesm2022/chips.mjs +8 -19
- package/fesm2022/chips.mjs.map +1 -1
- package/fesm2022/core.mjs +62 -38
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/form-field.mjs +2 -2
- package/fesm2022/form-field.mjs.map +1 -1
- package/fesm2022/list.mjs +14 -14
- package/fesm2022/list.mjs.map +1 -1
- package/fesm2022/menu.mjs +2 -2
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/radio.mjs +2 -2
- package/fesm2022/radio.mjs.map +1 -1
- package/fesm2022/sidenav.mjs +4 -4
- package/fesm2022/sidenav.mjs.map +1 -1
- package/fesm2022/slide-toggle.mjs +2 -2
- package/fesm2022/slide-toggle.mjs.map +1 -1
- package/fesm2022/slider.mjs +4 -4
- package/fesm2022/slider.mjs.map +1 -1
- package/fesm2022/table.mjs +2 -2
- package/fesm2022/table.mjs.map +1 -1
- package/fesm2022/tabs.mjs +6 -6
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/tooltip.mjs +16 -4
- package/fesm2022/tooltip.mjs.map +1 -1
- package/package.json +2 -146
- package/prebuilt-themes/azure-blue.css +1 -1
- package/prebuilt-themes/cyan-orange.css +1 -1
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/magenta-violet.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/prebuilt-themes/rose-red.css +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/schematics/ng-generate/m3-theme/index_bundled.js +2 -2
- package/schematics/ng-update/index_bundled.js +27 -27
- package/tabs/_tabs-common.scss +1 -1
- package/core/focus-indicators/_focus-indicators-theme.scss +0 -11
- package/core/focus-indicators/_focus-indicators.scss +0 -6
- package/esm2022/autocomplete/animations.mjs +0 -24
- package/esm2022/autocomplete/autocomplete-origin.mjs +0 -31
- package/esm2022/autocomplete/autocomplete-trigger.mjs +0 -902
- package/esm2022/autocomplete/autocomplete.mjs +0 -238
- package/esm2022/autocomplete/autocomplete_public_index.mjs +0 -5
- package/esm2022/autocomplete/index.mjs +0 -9
- package/esm2022/autocomplete/module.mjs +0 -61
- package/esm2022/autocomplete/public-api.mjs +0 -14
- package/esm2022/autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
- package/esm2022/autocomplete/testing/autocomplete-harness.mjs +0 -105
- package/esm2022/autocomplete/testing/index.mjs +0 -9
- package/esm2022/autocomplete/testing/public-api.mjs +0 -10
- package/esm2022/badge/badge-module.mjs +0 -27
- package/esm2022/badge/badge.mjs +0 -288
- package/esm2022/badge/badge_public_index.mjs +0 -5
- package/esm2022/badge/index.mjs +0 -9
- package/esm2022/badge/public-api.mjs +0 -10
- package/esm2022/badge/testing/badge-harness-filters.mjs +0 -9
- package/esm2022/badge/testing/badge-harness.mjs +0 -71
- package/esm2022/badge/testing/index.mjs +0 -9
- package/esm2022/badge/testing/public-api.mjs +0 -10
- package/esm2022/bottom-sheet/bottom-sheet-animations.mjs +0 -26
- package/esm2022/bottom-sheet/bottom-sheet-config.mjs +0 -48
- package/esm2022/bottom-sheet/bottom-sheet-container.mjs +0 -85
- package/esm2022/bottom-sheet/bottom-sheet-module.mjs +0 -28
- package/esm2022/bottom-sheet/bottom-sheet-ref.mjs +0 -104
- package/esm2022/bottom-sheet/bottom-sheet.mjs +0 -115
- package/esm2022/bottom-sheet/bottom-sheet_public_index.mjs +0 -5
- package/esm2022/bottom-sheet/index.mjs +0 -9
- package/esm2022/bottom-sheet/public-api.mjs +0 -14
- package/esm2022/bottom-sheet/testing/bottom-sheet-harness-filters.mjs +0 -9
- package/esm2022/bottom-sheet/testing/bottom-sheet-harness.mjs +0 -35
- package/esm2022/bottom-sheet/testing/index.mjs +0 -9
- package/esm2022/bottom-sheet/testing/public-api.mjs +0 -10
- package/esm2022/button/button-base.mjs +0 -230
- package/esm2022/button/button.mjs +0 -67
- package/esm2022/button/button_public_index.mjs +0 -5
- package/esm2022/button/fab.mjs +0 -166
- package/esm2022/button/icon-button.mjs +0 -56
- package/esm2022/button/index.mjs +0 -9
- package/esm2022/button/module.mjs +0 -65
- package/esm2022/button/public-api.mjs +0 -13
- package/esm2022/button/testing/button-harness-filters.mjs +0 -9
- package/esm2022/button/testing/button-harness.mjs +0 -80
- package/esm2022/button/testing/index.mjs +0 -9
- package/esm2022/button/testing/public-api.mjs +0 -10
- package/esm2022/button-toggle/button-toggle-module.mjs +0 -24
- package/esm2022/button-toggle/button-toggle.mjs +0 -651
- package/esm2022/button-toggle/button-toggle_public_index.mjs +0 -5
- package/esm2022/button-toggle/index.mjs +0 -9
- package/esm2022/button-toggle/public-api.mjs +0 -10
- package/esm2022/button-toggle/testing/button-toggle-group-harness-filters.mjs +0 -9
- package/esm2022/button-toggle/testing/button-toggle-group-harness.mjs +0 -47
- package/esm2022/button-toggle/testing/button-toggle-harness-filters.mjs +0 -9
- package/esm2022/button-toggle/testing/button-toggle-harness.mjs +0 -105
- package/esm2022/button-toggle/testing/index.mjs +0 -9
- package/esm2022/button-toggle/testing/public-api.mjs +0 -12
- package/esm2022/card/card.mjs +0 -273
- package/esm2022/card/card_public_index.mjs +0 -5
- package/esm2022/card/index.mjs +0 -9
- package/esm2022/card/module.mjs +0 -67
- package/esm2022/card/public-api.mjs +0 -10
- package/esm2022/card/testing/card-harness-filters.mjs +0 -9
- package/esm2022/card/testing/card-harness.mjs +0 -50
- package/esm2022/card/testing/index.mjs +0 -9
- package/esm2022/card/testing/public-api.mjs +0 -10
- package/esm2022/checkbox/checkbox-config.mjs +0 -22
- package/esm2022/checkbox/checkbox-required-validator.mjs +0 -41
- package/esm2022/checkbox/checkbox.mjs +0 -443
- package/esm2022/checkbox/checkbox_public_index.mjs +0 -5
- package/esm2022/checkbox/index.mjs +0 -9
- package/esm2022/checkbox/module.mjs +0 -41
- package/esm2022/checkbox/public-api.mjs +0 -12
- package/esm2022/checkbox/testing/checkbox-harness-filters.mjs +0 -9
- package/esm2022/checkbox/testing/checkbox-harness.mjs +0 -138
- package/esm2022/checkbox/testing/index.mjs +0 -9
- package/esm2022/checkbox/testing/public-api.mjs +0 -9
- package/esm2022/chips/chip-action.mjs +0 -113
- package/esm2022/chips/chip-edit-input.mjs +0 -61
- package/esm2022/chips/chip-grid.mjs +0 -420
- package/esm2022/chips/chip-icons.mjs +0 -107
- package/esm2022/chips/chip-input.mjs +0 -192
- package/esm2022/chips/chip-listbox.mjs +0 -369
- package/esm2022/chips/chip-option.mjs +0 -190
- package/esm2022/chips/chip-row.mjs +0 -173
- package/esm2022/chips/chip-set.mjs +0 -283
- package/esm2022/chips/chip-text-control.mjs +0 -9
- package/esm2022/chips/chip.mjs +0 -322
- package/esm2022/chips/chips_public_index.mjs +0 -5
- package/esm2022/chips/index.mjs +0 -9
- package/esm2022/chips/module.mjs +0 -85
- package/esm2022/chips/public-api.mjs +0 -20
- package/esm2022/chips/testing/chip-avatar-harness.mjs +0 -22
- package/esm2022/chips/testing/chip-edit-input-harness.mjs +0 -33
- package/esm2022/chips/testing/chip-grid-harness.mjs +0 -45
- package/esm2022/chips/testing/chip-harness-filters.mjs +0 -9
- package/esm2022/chips/testing/chip-harness.mjs +0 -62
- package/esm2022/chips/testing/chip-input-harness.mjs +0 -85
- package/esm2022/chips/testing/chip-listbox-harness.mjs +0 -61
- package/esm2022/chips/testing/chip-option-harness.mjs +0 -45
- package/esm2022/chips/testing/chip-remove-harness.mjs +0 -26
- package/esm2022/chips/testing/chip-row-harness.mjs +0 -40
- package/esm2022/chips/testing/chip-set-harness.mjs +0 -26
- package/esm2022/chips/testing/index.mjs +0 -9
- package/esm2022/chips/testing/public-api.mjs +0 -19
- package/esm2022/chips/tokens.mjs +0 -39
- package/esm2022/core/animation/animation.mjs +0 -21
- package/esm2022/core/common-behaviors/color.mjs +0 -33
- package/esm2022/core/common-behaviors/common-module.mjs +0 -127
- package/esm2022/core/common-behaviors/constructor.mjs +0 -9
- package/esm2022/core/common-behaviors/disable-ripple.mjs +0 -24
- package/esm2022/core/common-behaviors/disabled.mjs +0 -23
- package/esm2022/core/common-behaviors/error-state.mjs +0 -66
- package/esm2022/core/common-behaviors/index.mjs +0 -15
- package/esm2022/core/common-behaviors/initialized.mjs +0 -62
- package/esm2022/core/common-behaviors/tabindex.mjs +0 -25
- package/esm2022/core/core_public_index.mjs +0 -5
- package/esm2022/core/datetime/date-adapter.mjs +0 -109
- package/esm2022/core/datetime/date-formats.mjs +0 -10
- package/esm2022/core/datetime/index.mjs +0 -46
- package/esm2022/core/datetime/native-date-adapter.mjs +0 -221
- package/esm2022/core/datetime/native-date-formats.mjs +0 -19
- package/esm2022/core/error/error-options.mjs +0 -33
- package/esm2022/core/index.mjs +0 -9
- package/esm2022/core/internal-form-field/internal-form-field.mjs +0 -29
- package/esm2022/core/line/line.mjs +0 -64
- package/esm2022/core/option/index.mjs +0 -30
- package/esm2022/core/option/optgroup.mjs +0 -71
- package/esm2022/core/option/option-parent.mjs +0 -13
- package/esm2022/core/option/option.mjs +0 -283
- package/esm2022/core/private/index.mjs +0 -9
- package/esm2022/core/private/ripple-loader.mjs +0 -160
- package/esm2022/core/public-api.mjs +0 -19
- package/esm2022/core/ripple/index.mjs +0 -27
- package/esm2022/core/ripple/ripple-event-manager.mjs +0 -69
- package/esm2022/core/ripple/ripple-ref.mjs +0 -39
- package/esm2022/core/ripple/ripple-renderer.mjs +0 -354
- package/esm2022/core/ripple/ripple.mjs +0 -156
- package/esm2022/core/selection/index.mjs +0 -10
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +0 -24
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +0 -62
- package/esm2022/core/testing/index.mjs +0 -9
- package/esm2022/core/testing/optgroup-harness-filters.mjs +0 -9
- package/esm2022/core/testing/optgroup-harness.mjs +0 -43
- package/esm2022/core/testing/option-harness-filters.mjs +0 -9
- package/esm2022/core/testing/option-harness.mjs +0 -53
- package/esm2022/core/testing/public-api.mjs +0 -12
- package/esm2022/core/version.mjs +0 -11
- package/esm2022/datepicker/aria-accessible-name.mjs +0 -159
- package/esm2022/datepicker/calendar-body.mjs +0 -509
- package/esm2022/datepicker/calendar.mjs +0 -426
- package/esm2022/datepicker/date-range-input-parts.mjs +0 -372
- package/esm2022/datepicker/date-range-input.mjs +0 -369
- package/esm2022/datepicker/date-range-picker.mjs +0 -51
- package/esm2022/datepicker/date-range-selection-strategy.mjs +0 -97
- package/esm2022/datepicker/date-selection-model.mjs +0 -188
- package/esm2022/datepicker/datepicker-actions.mjs +0 -91
- package/esm2022/datepicker/datepicker-animations.mjs +0 -35
- package/esm2022/datepicker/datepicker-base.mjs +0 -609
- package/esm2022/datepicker/datepicker-errors.mjs +0 -14
- package/esm2022/datepicker/datepicker-input-base.mjs +0 -311
- package/esm2022/datepicker/datepicker-input.mjs +0 -200
- package/esm2022/datepicker/datepicker-intl.mjs +0 -69
- package/esm2022/datepicker/datepicker-module.mjs +0 -138
- package/esm2022/datepicker/datepicker-toggle.mjs +0 -113
- package/esm2022/datepicker/datepicker.mjs +0 -38
- package/esm2022/datepicker/datepicker_public_index.mjs +0 -5
- package/esm2022/datepicker/index.mjs +0 -9
- package/esm2022/datepicker/month-view.mjs +0 -460
- package/esm2022/datepicker/multi-year-view.mjs +0 -330
- package/esm2022/datepicker/public-api.mjs +0 -27
- package/esm2022/datepicker/testing/calendar-cell-harness.mjs +0 -138
- package/esm2022/datepicker/testing/calendar-harness.mjs +0 -83
- package/esm2022/datepicker/testing/date-range-input-harness.mjs +0 -98
- package/esm2022/datepicker/testing/datepicker-harness-filters.mjs +0 -9
- package/esm2022/datepicker/testing/datepicker-input-harness-base.mjs +0 -81
- package/esm2022/datepicker/testing/datepicker-input-harness.mjs +0 -58
- package/esm2022/datepicker/testing/datepicker-toggle-harness.mjs +0 -41
- package/esm2022/datepicker/testing/datepicker-trigger-harness-base.mjs +0 -65
- package/esm2022/datepicker/testing/index.mjs +0 -9
- package/esm2022/datepicker/testing/public-api.mjs +0 -14
- package/esm2022/datepicker/year-view.mjs +0 -324
- package/esm2022/dialog/dialog-animations.mjs +0 -38
- package/esm2022/dialog/dialog-config.mjs +0 -59
- package/esm2022/dialog/dialog-container.mjs +0 -253
- package/esm2022/dialog/dialog-content-directives.mjs +0 -212
- package/esm2022/dialog/dialog-ref.mjs +0 -177
- package/esm2022/dialog/dialog.mjs +0 -212
- package/esm2022/dialog/dialog_public_index.mjs +0 -5
- package/esm2022/dialog/index.mjs +0 -9
- package/esm2022/dialog/module.mjs +0 -45
- package/esm2022/dialog/public-api.mjs +0 -15
- package/esm2022/dialog/testing/dialog-harness-filters.mjs +0 -9
- package/esm2022/dialog/testing/dialog-harness.mjs +0 -84
- package/esm2022/dialog/testing/dialog-opener.mjs +0 -58
- package/esm2022/dialog/testing/index.mjs +0 -10
- package/esm2022/dialog/testing/public-api.mjs +0 -10
- package/esm2022/divider/divider-module.mjs +0 -24
- package/esm2022/divider/divider.mjs +0 -48
- package/esm2022/divider/divider_public_index.mjs +0 -5
- package/esm2022/divider/index.mjs +0 -9
- package/esm2022/divider/public-api.mjs +0 -10
- package/esm2022/divider/testing/divider-harness-filters.mjs +0 -9
- package/esm2022/divider/testing/divider-harness.mjs +0 -22
- package/esm2022/divider/testing/index.mjs +0 -9
- package/esm2022/divider/testing/public-api.mjs +0 -10
- package/esm2022/expansion/accordion-base.mjs +0 -14
- package/esm2022/expansion/accordion.mjs +0 -96
- package/esm2022/expansion/expansion-animations.mjs +0 -51
- package/esm2022/expansion/expansion-module.mjs +0 -65
- package/esm2022/expansion/expansion-panel-base.mjs +0 -14
- package/esm2022/expansion/expansion-panel-content.mjs +0 -35
- package/esm2022/expansion/expansion-panel-header.mjs +0 -218
- package/esm2022/expansion/expansion-panel.mjs +0 -211
- package/esm2022/expansion/expansion_public_index.mjs +0 -5
- package/esm2022/expansion/index.mjs +0 -9
- package/esm2022/expansion/public-api.mjs +0 -16
- package/esm2022/expansion/testing/accordion-harness.mjs +0 -31
- package/esm2022/expansion/testing/expansion-harness-filters.mjs +0 -9
- package/esm2022/expansion/testing/expansion-harness.mjs +0 -128
- package/esm2022/expansion/testing/index.mjs +0 -9
- package/esm2022/expansion/testing/public-api.mjs +0 -11
- package/esm2022/form-field/directives/error.mjs +0 -48
- package/esm2022/form-field/directives/floating-label.mjs +0 -135
- package/esm2022/form-field/directives/hint.mjs +0 -40
- package/esm2022/form-field/directives/label.mjs +0 -22
- package/esm2022/form-field/directives/line-ripple.mjs +0 -60
- package/esm2022/form-field/directives/notched-outline.mjs +0 -66
- package/esm2022/form-field/directives/prefix.mjs +0 -38
- package/esm2022/form-field/directives/suffix.mjs +0 -38
- package/esm2022/form-field/form-field-animations.mjs +0 -24
- package/esm2022/form-field/form-field-control.mjs +0 -11
- package/esm2022/form-field/form-field-errors.mjs +0 -20
- package/esm2022/form-field/form-field.mjs +0 -620
- package/esm2022/form-field/form-field_public_index.mjs +0 -5
- package/esm2022/form-field/index.mjs +0 -9
- package/esm2022/form-field/module.mjs +0 -51
- package/esm2022/form-field/public-api.mjs +0 -18
- package/esm2022/form-field/testing/control/form-field-control-harness.mjs +0 -15
- package/esm2022/form-field/testing/control/index.mjs +0 -9
- package/esm2022/form-field/testing/error-harness.mjs +0 -29
- package/esm2022/form-field/testing/form-field-harness-filters.mjs +0 -9
- package/esm2022/form-field/testing/form-field-harness.mjs +0 -179
- package/esm2022/form-field/testing/index.mjs +0 -9
- package/esm2022/form-field/testing/public-api.mjs +0 -15
- package/esm2022/grid-list/grid-list-base.mjs +0 -14
- package/esm2022/grid-list/grid-list-module.mjs +0 -59
- package/esm2022/grid-list/grid-list.mjs +0 -146
- package/esm2022/grid-list/grid-list_public_index.mjs +0 -5
- package/esm2022/grid-list/grid-tile.mjs +0 -128
- package/esm2022/grid-list/index.mjs +0 -9
- package/esm2022/grid-list/public-api.mjs +0 -14
- package/esm2022/grid-list/testing/grid-list-harness-filters.mjs +0 -9
- package/esm2022/grid-list/testing/grid-list-harness.mjs +0 -76
- package/esm2022/grid-list/testing/grid-tile-harness.mjs +0 -71
- package/esm2022/grid-list/testing/index.mjs +0 -9
- package/esm2022/grid-list/testing/public-api.mjs +0 -11
- package/esm2022/grid-list/tile-coordinator.mjs +0 -145
- package/esm2022/grid-list/tile-styler.mjs +0 -231
- package/esm2022/icon/fake-svgs.mjs +0 -62
- package/esm2022/icon/icon-module.mjs +0 -24
- package/esm2022/icon/icon-registry.mjs +0 -592
- package/esm2022/icon/icon.mjs +0 -379
- package/esm2022/icon/icon_public_index.mjs +0 -5
- package/esm2022/icon/index.mjs +0 -9
- package/esm2022/icon/public-api.mjs +0 -11
- package/esm2022/icon/testing/fake-icon-registry.mjs +0 -92
- package/esm2022/icon/testing/icon-harness-filters.mjs +0 -14
- package/esm2022/icon/testing/icon-harness.mjs +0 -60
- package/esm2022/icon/testing/index.mjs +0 -9
- package/esm2022/icon/testing/public-api.mjs +0 -11
- package/esm2022/icon/testing/testing_public_index.mjs +0 -5
- package/esm2022/icon/trusted-types.mjs +0 -43
- package/esm2022/index.mjs +0 -14
- package/esm2022/input/index.mjs +0 -9
- package/esm2022/input/input-errors.mjs +0 -12
- package/esm2022/input/input-value-accessor.mjs +0 -16
- package/esm2022/input/input.mjs +0 -524
- package/esm2022/input/input_public_index.mjs +0 -5
- package/esm2022/input/module.mjs +0 -26
- package/esm2022/input/public-api.mjs +0 -14
- package/esm2022/input/testing/index.mjs +0 -9
- package/esm2022/input/testing/input-harness-filters.mjs +0 -9
- package/esm2022/input/testing/input-harness.mjs +0 -119
- package/esm2022/input/testing/native-option-harness.mjs +0 -42
- package/esm2022/input/testing/native-select-harness-filters.mjs +0 -9
- package/esm2022/input/testing/native-select-harness.mjs +0 -79
- package/esm2022/input/testing/public-api.mjs +0 -13
- package/esm2022/list/action-list.mjs +0 -31
- package/esm2022/list/index.mjs +0 -9
- package/esm2022/list/list-base.mjs +0 -284
- package/esm2022/list/list-item-sections.mjs +0 -144
- package/esm2022/list/list-module.mjs +0 -97
- package/esm2022/list/list-option-types.mjs +0 -16
- package/esm2022/list/list-option.mjs +0 -295
- package/esm2022/list/list.mjs +0 -103
- package/esm2022/list/list_public_index.mjs +0 -5
- package/esm2022/list/nav-list.mjs +0 -37
- package/esm2022/list/public-api.mjs +0 -18
- package/esm2022/list/selection-list.mjs +0 -391
- package/esm2022/list/subheader.mjs +0 -28
- package/esm2022/list/testing/action-list-harness.mjs +0 -59
- package/esm2022/list/testing/index.mjs +0 -9
- package/esm2022/list/testing/list-harness-base.mjs +0 -95
- package/esm2022/list/testing/list-harness-filters.mjs +0 -9
- package/esm2022/list/testing/list-harness.mjs +0 -41
- package/esm2022/list/testing/list-item-harness-base.mjs +0 -162
- package/esm2022/list/testing/nav-list-harness.mjs +0 -69
- package/esm2022/list/testing/public-api.mjs +0 -14
- package/esm2022/list/testing/selection-list-harness.mjs +0 -122
- package/esm2022/list/tokens.mjs +0 -11
- package/esm2022/menu/index.mjs +0 -9
- package/esm2022/menu/menu-animations.mjs +0 -61
- package/esm2022/menu/menu-content.mjs +0 -87
- package/esm2022/menu/menu-errors.mjs +0 -35
- package/esm2022/menu/menu-item.mjs +0 -148
- package/esm2022/menu/menu-panel.mjs +0 -14
- package/esm2022/menu/menu-positions.mjs +0 -9
- package/esm2022/menu/menu-trigger.mjs +0 -542
- package/esm2022/menu/menu.mjs +0 -405
- package/esm2022/menu/menu_public_index.mjs +0 -5
- package/esm2022/menu/module.mjs +0 -63
- package/esm2022/menu/public-api.mjs +0 -16
- package/esm2022/menu/testing/index.mjs +0 -9
- package/esm2022/menu/testing/menu-harness-filters.mjs +0 -9
- package/esm2022/menu/testing/menu-harness.mjs +0 -166
- package/esm2022/menu/testing/public-api.mjs +0 -10
- package/esm2022/paginator/index.mjs +0 -9
- package/esm2022/paginator/module.mjs +0 -28
- package/esm2022/paginator/paginator-intl.mjs +0 -62
- package/esm2022/paginator/paginator.mjs +0 -266
- package/esm2022/paginator/paginator_public_index.mjs +0 -5
- package/esm2022/paginator/public-api.mjs +0 -11
- package/esm2022/paginator/testing/index.mjs +0 -9
- package/esm2022/paginator/testing/paginator-harness-filters.mjs +0 -9
- package/esm2022/paginator/testing/paginator-harness.mjs +0 -98
- package/esm2022/paginator/testing/public-api.mjs +0 -10
- package/esm2022/progress-bar/index.mjs +0 -9
- package/esm2022/progress-bar/module.mjs +0 -24
- package/esm2022/progress-bar/progress-bar.mjs +0 -181
- package/esm2022/progress-bar/progress-bar_public_index.mjs +0 -5
- package/esm2022/progress-bar/public-api.mjs +0 -10
- package/esm2022/progress-bar/testing/index.mjs +0 -9
- package/esm2022/progress-bar/testing/progress-bar-harness-filters.mjs +0 -9
- package/esm2022/progress-bar/testing/progress-bar-harness.mjs +0 -33
- package/esm2022/progress-bar/testing/public-api.mjs +0 -10
- package/esm2022/progress-bar/testing/testing_public_index.mjs +0 -5
- package/esm2022/progress-spinner/index.mjs +0 -9
- package/esm2022/progress-spinner/module.mjs +0 -25
- package/esm2022/progress-spinner/progress-spinner.mjs +0 -166
- package/esm2022/progress-spinner/progress-spinner_public_index.mjs +0 -5
- package/esm2022/progress-spinner/public-api.mjs +0 -10
- package/esm2022/progress-spinner/testing/index.mjs +0 -9
- package/esm2022/progress-spinner/testing/progress-spinner-harness-filters.mjs +0 -9
- package/esm2022/progress-spinner/testing/progress-spinner-harness.mjs +0 -35
- package/esm2022/progress-spinner/testing/public-api.mjs +0 -10
- package/esm2022/progress-spinner/testing/testing_public_index.mjs +0 -5
- package/esm2022/radio/index.mjs +0 -9
- package/esm2022/radio/module.mjs +0 -25
- package/esm2022/radio/public-api.mjs +0 -10
- package/esm2022/radio/radio.mjs +0 -680
- package/esm2022/radio/radio_public_index.mjs +0 -5
- package/esm2022/radio/testing/index.mjs +0 -9
- package/esm2022/radio/testing/public-api.mjs +0 -10
- package/esm2022/radio/testing/radio-harness-filters.mjs +0 -9
- package/esm2022/radio/testing/radio-harness.mjs +0 -228
- package/esm2022/select/index.mjs +0 -9
- package/esm2022/select/module.mjs +0 -59
- package/esm2022/select/public-api.mjs +0 -15
- package/esm2022/select/select-animations.mjs +0 -38
- package/esm2022/select/select-errors.mjs +0 -35
- package/esm2022/select/select.mjs +0 -1160
- package/esm2022/select/select_public_index.mjs +0 -5
- package/esm2022/select/testing/index.mjs +0 -9
- package/esm2022/select/testing/public-api.mjs +0 -10
- package/esm2022/select/testing/select-harness-filters.mjs +0 -9
- package/esm2022/select/testing/select-harness.mjs +0 -129
- package/esm2022/sidenav/drawer-animations.mjs +0 -33
- package/esm2022/sidenav/drawer.mjs +0 -863
- package/esm2022/sidenav/index.mjs +0 -9
- package/esm2022/sidenav/public-api.mjs +0 -12
- package/esm2022/sidenav/sidenav-module.mjs +0 -60
- package/esm2022/sidenav/sidenav.mjs +0 -148
- package/esm2022/sidenav/sidenav_public_index.mjs +0 -5
- package/esm2022/sidenav/testing/drawer-container-harness.mjs +0 -36
- package/esm2022/sidenav/testing/drawer-content-harness.mjs +0 -23
- package/esm2022/sidenav/testing/drawer-harness-filters.mjs +0 -9
- package/esm2022/sidenav/testing/drawer-harness.mjs +0 -49
- package/esm2022/sidenav/testing/index.mjs +0 -9
- package/esm2022/sidenav/testing/public-api.mjs +0 -15
- package/esm2022/sidenav/testing/sidenav-container-harness.mjs +0 -36
- package/esm2022/sidenav/testing/sidenav-content-harness.mjs +0 -23
- package/esm2022/sidenav/testing/sidenav-harness.mjs +0 -28
- package/esm2022/slide-toggle/index.mjs +0 -9
- package/esm2022/slide-toggle/module.mjs +0 -41
- package/esm2022/slide-toggle/public-api.mjs +0 -12
- package/esm2022/slide-toggle/slide-toggle-config.mjs +0 -14
- package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +0 -44
- package/esm2022/slide-toggle/slide-toggle.mjs +0 -273
- package/esm2022/slide-toggle/slide-toggle_public_index.mjs +0 -5
- package/esm2022/slide-toggle/testing/index.mjs +0 -9
- package/esm2022/slide-toggle/testing/public-api.mjs +0 -10
- package/esm2022/slide-toggle/testing/slide-toggle-harness-filters.mjs +0 -9
- package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +0 -110
- package/esm2022/slider/index.mjs +0 -9
- package/esm2022/slider/module.mjs +0 -39
- package/esm2022/slider/public-api.mjs +0 -13
- package/esm2022/slider/slider-input.mjs +0 -701
- package/esm2022/slider/slider-interface.mjs +0 -56
- package/esm2022/slider/slider-thumb.mjs +0 -231
- package/esm2022/slider/slider.mjs +0 -746
- package/esm2022/slider/slider_public_index.mjs +0 -5
- package/esm2022/slider/testing/index.mjs +0 -9
- package/esm2022/slider/testing/public-api.mjs +0 -11
- package/esm2022/slider/testing/slider-harness-filters.mjs +0 -7
- package/esm2022/slider/testing/slider-harness.mjs +0 -67
- package/esm2022/slider/testing/slider-thumb-harness.mjs +0 -95
- package/esm2022/snack-bar/index.mjs +0 -9
- package/esm2022/snack-bar/module.mjs +0 -47
- package/esm2022/snack-bar/public-api.mjs +0 -16
- package/esm2022/snack-bar/simple-snack-bar.mjs +0 -40
- package/esm2022/snack-bar/snack-bar-animations.mjs +0 -30
- package/esm2022/snack-bar/snack-bar-config.mjs +0 -33
- package/esm2022/snack-bar/snack-bar-container.mjs +0 -277
- package/esm2022/snack-bar/snack-bar-content.mjs +0 -55
- package/esm2022/snack-bar/snack-bar-ref.mjs +0 -89
- package/esm2022/snack-bar/snack-bar.mjs +0 -267
- package/esm2022/snack-bar/snack-bar_public_index.mjs +0 -5
- package/esm2022/snack-bar/testing/index.mjs +0 -9
- package/esm2022/snack-bar/testing/public-api.mjs +0 -10
- package/esm2022/snack-bar/testing/snack-bar-harness-filters.mjs +0 -9
- package/esm2022/snack-bar/testing/snack-bar-harness.mjs +0 -101
- package/esm2022/sort/index.mjs +0 -9
- package/esm2022/sort/public-api.mjs +0 -14
- package/esm2022/sort/sort-animations.mjs +0 -69
- package/esm2022/sort/sort-direction.mjs +0 -9
- package/esm2022/sort/sort-errors.mjs +0 -24
- package/esm2022/sort/sort-header-intl.mjs +0 -41
- package/esm2022/sort/sort-header.mjs +0 -317
- package/esm2022/sort/sort-module.mjs +0 -27
- package/esm2022/sort/sort.mjs +0 -155
- package/esm2022/sort/sort_public_index.mjs +0 -5
- package/esm2022/sort/testing/index.mjs +0 -9
- package/esm2022/sort/testing/public-api.mjs +0 -11
- package/esm2022/sort/testing/sort-harness-filters.mjs +0 -2
- package/esm2022/sort/testing/sort-harness.mjs +0 -36
- package/esm2022/sort/testing/sort-header-harness.mjs +0 -56
- package/esm2022/stepper/index.mjs +0 -9
- package/esm2022/stepper/public-api.mjs +0 -17
- package/esm2022/stepper/step-content.mjs +0 -27
- package/esm2022/stepper/step-header.mjs +0 -105
- package/esm2022/stepper/step-label.mjs +0 -22
- package/esm2022/stepper/stepper-animations.mjs +0 -47
- package/esm2022/stepper/stepper-button.mjs +0 -43
- package/esm2022/stepper/stepper-icon.mjs +0 -30
- package/esm2022/stepper/stepper-intl.mjs +0 -43
- package/esm2022/stepper/stepper-module.mjs +0 -88
- package/esm2022/stepper/stepper.mjs +0 -205
- package/esm2022/stepper/stepper_public_index.mjs +0 -5
- package/esm2022/stepper/testing/index.mjs +0 -9
- package/esm2022/stepper/testing/public-api.mjs +0 -12
- package/esm2022/stepper/testing/step-harness-filters.mjs +0 -7
- package/esm2022/stepper/testing/step-harness.mjs +0 -90
- package/esm2022/stepper/testing/stepper-button-harnesses.mjs +0 -48
- package/esm2022/stepper/testing/stepper-harness.mjs +0 -51
- package/esm2022/table/cell.mjs +0 -147
- package/esm2022/table/index.mjs +0 -9
- package/esm2022/table/module.mjs +0 -93
- package/esm2022/table/public-api.mjs +0 -14
- package/esm2022/table/row.mjs +0 -163
- package/esm2022/table/table-data-source.mjs +0 -317
- package/esm2022/table/table.mjs +0 -122
- package/esm2022/table/table_public_index.mjs +0 -5
- package/esm2022/table/testing/cell-harness.mjs +0 -77
- package/esm2022/table/testing/index.mjs +0 -9
- package/esm2022/table/testing/public-api.mjs +0 -12
- package/esm2022/table/testing/row-harness.mjs +0 -84
- package/esm2022/table/testing/table-harness-filters.mjs +0 -2
- package/esm2022/table/testing/table-harness.mjs +0 -86
- package/esm2022/table/text-column.mjs +0 -60
- package/esm2022/tabs/index.mjs +0 -9
- package/esm2022/tabs/ink-bar.mjs +0 -149
- package/esm2022/tabs/module.mjs +0 -60
- package/esm2022/tabs/paginated-tab-header.mjs +0 -539
- package/esm2022/tabs/public-api.mjs +0 -21
- package/esm2022/tabs/tab-body.mjs +0 -199
- package/esm2022/tabs/tab-config.mjs +0 -11
- package/esm2022/tabs/tab-content.mjs +0 -32
- package/esm2022/tabs/tab-group.mjs +0 -469
- package/esm2022/tabs/tab-header.mjs +0 -86
- package/esm2022/tabs/tab-label-wrapper.mjs +0 -49
- package/esm2022/tabs/tab-label.mjs +0 -44
- package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +0 -388
- package/esm2022/tabs/tab.mjs +0 -128
- package/esm2022/tabs/tabs-animations.mjs +0 -45
- package/esm2022/tabs/tabs_public_index.mjs +0 -5
- package/esm2022/tabs/testing/index.mjs +0 -9
- package/esm2022/tabs/testing/public-api.mjs +0 -13
- package/esm2022/tabs/testing/tab-group-harness.mjs +0 -56
- package/esm2022/tabs/testing/tab-harness-filters.mjs +0 -2
- package/esm2022/tabs/testing/tab-harness.mjs +0 -66
- package/esm2022/tabs/testing/tab-link-harness.mjs +0 -40
- package/esm2022/tabs/testing/tab-nav-bar-harness.mjs +0 -66
- package/esm2022/tabs/testing/tab-nav-panel-harness.mjs +0 -27
- package/esm2022/toolbar/index.mjs +0 -9
- package/esm2022/toolbar/public-api.mjs +0 -10
- package/esm2022/toolbar/testing/index.mjs +0 -9
- package/esm2022/toolbar/testing/public-api.mjs +0 -10
- package/esm2022/toolbar/testing/toolbar-harness-filters.mjs +0 -9
- package/esm2022/toolbar/testing/toolbar-harness.mjs +0 -44
- package/esm2022/toolbar/toolbar-module.mjs +0 -24
- package/esm2022/toolbar/toolbar.mjs +0 -84
- package/esm2022/toolbar/toolbar_public_index.mjs +0 -5
- package/esm2022/tooltip/index.mjs +0 -9
- package/esm2022/tooltip/module.mjs +0 -29
- package/esm2022/tooltip/public-api.mjs +0 -11
- package/esm2022/tooltip/testing/index.mjs +0 -9
- package/esm2022/tooltip/testing/public-api.mjs +0 -10
- package/esm2022/tooltip/testing/tooltip-harness-filters.mjs +0 -9
- package/esm2022/tooltip/testing/tooltip-harness.mjs +0 -66
- package/esm2022/tooltip/tooltip-animations.mjs +0 -24
- package/esm2022/tooltip/tooltip.mjs +0 -920
- package/esm2022/tooltip/tooltip_public_index.mjs +0 -5
- package/esm2022/tree/data-source/flat-data-source.mjs +0 -156
- package/esm2022/tree/data-source/nested-data-source.mjs +0 -38
- package/esm2022/tree/index.mjs +0 -9
- package/esm2022/tree/node.mjs +0 -220
- package/esm2022/tree/outlet.mjs +0 -46
- package/esm2022/tree/padding.mjs +0 -46
- package/esm2022/tree/public-api.mjs +0 -16
- package/esm2022/tree/testing/index.mjs +0 -9
- package/esm2022/tree/testing/node-harness.mjs +0 -73
- package/esm2022/tree/testing/public-api.mjs +0 -11
- package/esm2022/tree/testing/tree-harness-filters.mjs +0 -9
- package/esm2022/tree/testing/tree-harness.mjs +0 -123
- package/esm2022/tree/toggle.mjs +0 -27
- package/esm2022/tree/tree-module.mjs +0 -50
- package/esm2022/tree/tree.mjs +0 -34
- package/esm2022/tree/tree_public_index.mjs +0 -5
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Class for determining, from a list of tiles, the (row, col) position of each of those tiles
|
|
10
|
-
* in the grid. This is necessary (rather than just rendering the tiles in normal document flow)
|
|
11
|
-
* because the tiles can have a rowspan.
|
|
12
|
-
*
|
|
13
|
-
* The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid
|
|
14
|
-
* large enough to accommodate it so that the tiles still render in the same order in which they
|
|
15
|
-
* are given.
|
|
16
|
-
*
|
|
17
|
-
* The basis of the algorithm is the use of an array to track the already placed tiles. Each
|
|
18
|
-
* element of the array corresponds to a column, and the value indicates how many cells in that
|
|
19
|
-
* column are already occupied; zero indicates an empty cell. Moving "down" to the next row
|
|
20
|
-
* decrements each value in the tracking array (indicating that the column is one cell closer to
|
|
21
|
-
* being free).
|
|
22
|
-
*
|
|
23
|
-
* @docs-private
|
|
24
|
-
*/
|
|
25
|
-
export class TileCoordinator {
|
|
26
|
-
constructor() {
|
|
27
|
-
/** Index at which the search for the next gap will start. */
|
|
28
|
-
this.columnIndex = 0;
|
|
29
|
-
/** The current row index. */
|
|
30
|
-
this.rowIndex = 0;
|
|
31
|
-
}
|
|
32
|
-
/** Gets the total number of rows occupied by tiles */
|
|
33
|
-
get rowCount() {
|
|
34
|
-
return this.rowIndex + 1;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Gets the total span of rows occupied by tiles.
|
|
38
|
-
* Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.
|
|
39
|
-
*/
|
|
40
|
-
get rowspan() {
|
|
41
|
-
const lastRowMax = Math.max(...this.tracker);
|
|
42
|
-
// if any of the tiles has a rowspan that pushes it beyond the total row count,
|
|
43
|
-
// add the difference to the rowcount
|
|
44
|
-
return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Updates the tile positions.
|
|
48
|
-
* @param numColumns Amount of columns in the grid.
|
|
49
|
-
* @param tiles Tiles to be positioned.
|
|
50
|
-
*/
|
|
51
|
-
update(numColumns, tiles) {
|
|
52
|
-
this.columnIndex = 0;
|
|
53
|
-
this.rowIndex = 0;
|
|
54
|
-
this.tracker = new Array(numColumns);
|
|
55
|
-
this.tracker.fill(0, 0, this.tracker.length);
|
|
56
|
-
this.positions = tiles.map(tile => this._trackTile(tile));
|
|
57
|
-
}
|
|
58
|
-
/** Calculates the row and col position of a tile. */
|
|
59
|
-
_trackTile(tile) {
|
|
60
|
-
// Find a gap large enough for this tile.
|
|
61
|
-
const gapStartIndex = this._findMatchingGap(tile.colspan);
|
|
62
|
-
// Place tile in the resulting gap.
|
|
63
|
-
this._markTilePosition(gapStartIndex, tile);
|
|
64
|
-
// The next time we look for a gap, the search will start at columnIndex, which should be
|
|
65
|
-
// immediately after the tile that has just been placed.
|
|
66
|
-
this.columnIndex = gapStartIndex + tile.colspan;
|
|
67
|
-
return new TilePosition(this.rowIndex, gapStartIndex);
|
|
68
|
-
}
|
|
69
|
-
/** Finds the next available space large enough to fit the tile. */
|
|
70
|
-
_findMatchingGap(tileCols) {
|
|
71
|
-
if (tileCols > this.tracker.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
72
|
-
throw Error(`mat-grid-list: tile with colspan ${tileCols} is wider than ` +
|
|
73
|
-
`grid with cols="${this.tracker.length}".`);
|
|
74
|
-
}
|
|
75
|
-
// Start index is inclusive, end index is exclusive.
|
|
76
|
-
let gapStartIndex = -1;
|
|
77
|
-
let gapEndIndex = -1;
|
|
78
|
-
// Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.
|
|
79
|
-
do {
|
|
80
|
-
// If we've reached the end of the row, go to the next row.
|
|
81
|
-
if (this.columnIndex + tileCols > this.tracker.length) {
|
|
82
|
-
this._nextRow();
|
|
83
|
-
gapStartIndex = this.tracker.indexOf(0, this.columnIndex);
|
|
84
|
-
gapEndIndex = this._findGapEndIndex(gapStartIndex);
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
gapStartIndex = this.tracker.indexOf(0, this.columnIndex);
|
|
88
|
-
// If there are no more empty spaces in this row at all, move on to the next row.
|
|
89
|
-
if (gapStartIndex == -1) {
|
|
90
|
-
this._nextRow();
|
|
91
|
-
gapStartIndex = this.tracker.indexOf(0, this.columnIndex);
|
|
92
|
-
gapEndIndex = this._findGapEndIndex(gapStartIndex);
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
gapEndIndex = this._findGapEndIndex(gapStartIndex);
|
|
96
|
-
// If a gap large enough isn't found, we want to start looking immediately after the current
|
|
97
|
-
// gap on the next iteration.
|
|
98
|
-
this.columnIndex = gapStartIndex + 1;
|
|
99
|
-
// Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is
|
|
100
|
-
// exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.
|
|
101
|
-
} while (gapEndIndex - gapStartIndex < tileCols || gapEndIndex == 0);
|
|
102
|
-
// If we still didn't manage to find a gap, ensure that the index is
|
|
103
|
-
// at least zero so the tile doesn't get pulled out of the grid.
|
|
104
|
-
return Math.max(gapStartIndex, 0);
|
|
105
|
-
}
|
|
106
|
-
/** Move "down" to the next row. */
|
|
107
|
-
_nextRow() {
|
|
108
|
-
this.columnIndex = 0;
|
|
109
|
-
this.rowIndex++;
|
|
110
|
-
// Decrement all spaces by one to reflect moving down one row.
|
|
111
|
-
for (let i = 0; i < this.tracker.length; i++) {
|
|
112
|
-
this.tracker[i] = Math.max(0, this.tracker[i] - 1);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Finds the end index (exclusive) of a gap given the index from which to start looking.
|
|
117
|
-
* The gap ends when a non-zero value is found.
|
|
118
|
-
*/
|
|
119
|
-
_findGapEndIndex(gapStartIndex) {
|
|
120
|
-
for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {
|
|
121
|
-
if (this.tracker[i] != 0) {
|
|
122
|
-
return i;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// The gap ends with the end of the row.
|
|
126
|
-
return this.tracker.length;
|
|
127
|
-
}
|
|
128
|
-
/** Update the tile tracker to account for the given tile in the given space. */
|
|
129
|
-
_markTilePosition(start, tile) {
|
|
130
|
-
for (let i = 0; i < tile.colspan; i++) {
|
|
131
|
-
this.tracker[start + i] = tile.rowspan;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Simple data structure for tile position (row, col).
|
|
137
|
-
* @docs-private
|
|
138
|
-
*/
|
|
139
|
-
export class TilePosition {
|
|
140
|
-
constructor(row, col) {
|
|
141
|
-
this.row = row;
|
|
142
|
-
this.col = col;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1jb29yZGluYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9ncmlkLWxpc3QvdGlsZS1jb29yZGluYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFhSDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBSUUsNkRBQTZEO1FBQzdELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRXhCLDZCQUE2QjtRQUM3QixhQUFRLEdBQVcsQ0FBQyxDQUFDO0lBa0l2QixDQUFDO0lBaElDLHNEQUFzRDtJQUN0RCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLE9BQU87UUFDVCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLCtFQUErRTtRQUMvRSxxQ0FBcUM7UUFDckMsT0FBTyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekUsQ0FBQztJQUtEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBa0IsRUFBRSxLQUFhO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFD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UTtJQUNqQixDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBhIHRpbGUuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGlsZSB7XG4gIC8qKiBBbW91bnQgb2Ygcm93cyB0aGF0IHRoZSB0aWxlIHRha2VzIHVwLiAqL1xuICByb3dzcGFuOiBudW1iZXI7XG4gIC8qKiBBbW91bnQgb2YgY29sdW1ucyB0aGF0IHRoZSB0aWxlIHRha2VzIHVwLiAqL1xuICBjb2xzcGFuOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIGRldGVybWluaW5nLCBmcm9tIGEgbGlzdCBvZiB0aWxlcywgdGhlIChyb3csIGNvbCkgcG9zaXRpb24gb2YgZWFjaCBvZiB0aG9zZSB0aWxlc1xuICogaW4gdGhlIGdyaWQuIFRoaXMgaXMgbmVjZXNzYXJ5IChyYXRoZXIgdGhhbiBqdXN0IHJlbmRlcmluZyB0aGUgdGlsZXMgaW4gbm9ybWFsIGRvY3VtZW50IGZsb3cpXG4gKiBiZWNhdXNlIHRoZSB0aWxlcyBjYW4gaGF2ZSBhIHJvd3NwYW4uXG4gKlxuICogVGhlIHBvc2l0aW9uaW5nIGFsZ29yaXRobSBncmVlZGlseSBwbGFjZXMgZWFjaCB0aWxlIGFzIHNvb24gYXMgaXQgZW5jb3VudGVycyBhIGdhcCBpbiB0aGUgZ3JpZFxuICogbGFyZ2UgZW5vdWdoIHRvIGFjY29tbW9kYXRlIGl0IHNvIHRoYXQgdGhlIHRpbGVzIHN0aWxsIHJlbmRlciBpbiB0aGUgc2FtZSBvcmRlciBpbiB3aGljaCB0aGV5XG4gKiBhcmUgZ2l2ZW4uXG4gKlxuICogVGhlIGJhc2lzIG9mIHRoZSBhbGdvcml0aG0gaXMgdGhlIHVzZSBvZiBhbiBhcnJheSB0byB0cmFjayB0aGUgYWxyZWFkeSBwbGFjZWQgdGlsZXMuIEVhY2hcbiAqIGVsZW1lbnQgb2YgdGhlIGFycmF5IGNvcnJlc3BvbmRzIHRvIGEgY29sdW1uLCBhbmQgdGhlIHZhbHVlIGluZGljYXRlcyBob3cgbWFueSBjZWxscyBpbiB0aGF0XG4gKiBjb2x1bW4gYXJlIGFscmVhZHkgb2NjdXBpZWQ7IHplcm8gaW5kaWNhdGVzIGFuIGVtcHR5IGNlbGwuIE1vdmluZyBcImRvd25cIiB0byB0aGUgbmV4dCByb3dcbiAqIGRlY3JlbWVudHMgZWFjaCB2YWx1ZSBpbiB0aGUgdHJhY2tpbmcgYXJyYXkgKGluZGljYXRpbmcgdGhhdCB0aGUgY29sdW1uIGlzIG9uZSBjZWxsIGNsb3NlciB0b1xuICogYmVpbmcgZnJlZSkuXG4gKlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgVGlsZUNvb3JkaW5hdG9yIHtcbiAgLyoqIFRyYWNraW5nIGFycmF5IChzZWUgY2xhc3MgZGVzY3JpcHRpb24pLiAqL1xuICB0cmFja2VyOiBudW1iZXJbXTtcblxuICAvKiogSW5kZXggYXQgd2hpY2ggdGhlIHNlYXJjaCBmb3IgdGhlIG5leHQgZ2FwIHdpbGwgc3RhcnQuICovXG4gIGNvbHVtbkluZGV4OiBudW1iZXIgPSAwO1xuXG4gIC8qKiBUaGUgY3VycmVudCByb3cgaW5kZXguICovXG4gIHJvd0luZGV4OiBudW1iZXIgPSAwO1xuXG4gIC8qKiBHZXRzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBvY2N1cGllZCBieSB0aWxlcyAqL1xuICBnZXQgcm93Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yb3dJbmRleCArIDE7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdG90YWwgc3BhbiBvZiByb3dzIG9jY3VwaWVkIGJ5IHRpbGVzLlxuICAgKiBFeDogQSBsaXN0IHdpdGggMSByb3cgdGhhdCBjb250YWlucyBhIHRpbGUgd2l0aCByb3dzcGFuIDIgd2lsbCBoYXZlIGEgdG90YWwgcm93c3BhbiBvZiAyLlxuICAgKi9cbiAgZ2V0IHJvd3NwYW4oKSB7XG4gICAgY29uc3QgbGFzdFJvd01heCA9IE1hdGgubWF4KC4uLnRoaXMudHJhY2tlcik7XG4gICAgLy8gaWYgYW55IG9mIHRoZSB0aWxlcyBoYXMgYSByb3dzcGFuIHRoYXQgcHVzaGVzIGl0IGJleW9uZCB0aGUgdG90YWwgcm93IGNvdW50LFxuICAgIC8vIGFkZCB0aGUgZGlmZmVyZW5jZSB0byB0aGUgcm93Y291bnRcbiAgICByZXR1cm4gbGFzdFJvd01heCA+IDEgPyB0aGlzLnJvd0NvdW50ICsgbGFzdFJvd01heCAtIDEgOiB0aGlzLnJvd0NvdW50O1xuICB9XG5cbiAgLyoqIFRoZSBjb21wdXRlZCAocm93LCBjb2wpIHBvc2l0aW9uIG9mIGVhY2ggdGlsZSAodGhlIG91dHB1dCkuICovXG4gIHBvc2l0aW9uczogVGlsZVBvc2l0aW9uW107XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHRpbGUgcG9zaXRpb25zLlxuICAgKiBAcGFyYW0gbnVtQ29sdW1ucyBBbW91bnQgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC5cbiAgICogQHBhcmFtIHRpbGVzIFRpbGVzIHRvIGJlIHBvc2l0aW9uZWQuXG4gICAqL1xuICB1cGRhdGUobnVtQ29sdW1uczogbnVtYmVyLCB0aWxlczogVGlsZVtdKSB7XG4gICAgdGhpcy5jb2x1bW5JbmRleCA9IDA7XG4gICAgdGhpcy5yb3dJbmRleCA9IDA7XG5cbiAgICB0aGlzLnRyYWNrZXIgPSBuZXcgQXJyYXkobnVtQ29sdW1ucyk7XG4gICAgdGhpcy50cmFja2VyLmZpbGwoMCwgMCwgdGhpcy50cmFja2VyLmxlbmd0aCk7XG4gICAgdGhpcy5wb3NpdGlvbnMgPSB0aWxlcy5tYXAodGlsZSA9PiB0aGlzLl90cmFja1RpbGUodGlsZSkpO1xuICB9XG5cbiAgLyoqIENhbGN1bGF0ZXMgdGhlIHJvdyBhbmQgY29sIHBvc2l0aW9uIG9mIGEgdGlsZS4gKi9cbiAgcHJpdmF0ZSBfdHJhY2tUaWxlKHRpbGU6IFRpbGUpOiBUaWxlUG9zaXRpb24ge1xuICAgIC8vIEZpbmQgYSBnYXAgbGFyZ2UgZW5vdWdoIGZvciB0aGlzIHRpbGUuXG4gICAgY29uc3QgZ2FwU3RhcnRJbmRleCA9IHRoaXMuX2ZpbmRNYXRjaGluZ0dhcCh0aWxlLmNvbHNwYW4pO1xuXG4gICAgLy8gUGxhY2UgdGlsZSBpbiB0aGUgcmVzdWx0aW5nIGdhcC5cbiAgICB0aGlzLl9tYXJrVGlsZVBvc2l0aW9uKGdhcFN0YXJ0SW5kZXgsIHRpbGUpO1xuXG4gICAgLy8gVGhlIG5leHQgdGltZSB3ZSBsb29rIGZvciBhIGdhcCwgdGhlIHNlYXJjaCB3aWxsIHN0YXJ0IGF0IGNvbHVtbkluZGV4LCB3aGljaCBzaG91bGQgYmVcbiAgICAvLyBpbW1lZGlhdGVseSBhZnRlciB0aGUgdGlsZSB0aGF0IGhhcyBqdXN0IGJlZW4gcGxhY2VkLlxuICAgIHRoaXMuY29sdW1uSW5kZXggPSBnYXBTdGFydEluZGV4ICsgdGlsZS5jb2xzcGFuO1xuXG4gICAgcmV0dXJuIG5ldyBUaWxlUG9zaXRpb24odGhpcy5yb3dJbmRleCwgZ2FwU3RhcnRJbmRleCk7XG4gIH1cblxuICAvKiogRmluZHMgdGhlIG5leHQgYXZhaWxhYmxlIHNwYWNlIGxhcmdlIGVub3VnaCB0byBmaXQgdGhlIHRpbGUuICovXG4gIHByaXZhdGUgX2ZpbmRNYXRjaGluZ0dhcCh0aWxlQ29sczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodGlsZUNvbHMgPiB0aGlzLnRyYWNrZXIubGVuZ3RoICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYG1hdC1ncmlkLWxpc3Q6IHRpbGUgd2l0aCBjb2xzcGFuICR7dGlsZUNvbHN9IGlzIHdpZGVyIHRoYW4gYCArXG4gICAgICAgICAgYGdyaWQgd2l0aCBjb2xzPVwiJHt0aGlzLnRyYWNrZXIubGVuZ3RofVwiLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFN0YXJ0IGluZGV4IGlzIGluY2x1c2l2ZSwgZW5kIGluZGV4IGlzIGV4Y2x1c2l2ZS5cbiAgICBsZXQgZ2FwU3RhcnRJbmRleCA9IC0xO1xuICAgIGxldCBnYXBFbmRJbmRleCA9IC0xO1xuXG4gICAgLy8gTG9vayBmb3IgYSBnYXAgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZ2l2ZW4gdGlsZS4gRW1wdHkgc3BhY2VzIGFyZSBtYXJrZWQgd2l0aCBhIHplcm8uXG4gICAgZG8ge1xuICAgICAgLy8gSWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSByb3csIGdvIHRvIHRoZSBuZXh0IHJvdy5cbiAgICAgIGlmICh0aGlzLmNvbHVtbkluZGV4ICsgdGlsZUNvbHMgPiB0aGlzLnRyYWNrZXIubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuX25leHRSb3coKTtcbiAgICAgICAgZ2FwU3RhcnRJbmRleCA9IHRoaXMudHJhY2tlci5pbmRleE9mKDAsIHRoaXMuY29sdW1uSW5kZXgpO1xuICAgICAgICBnYXBFbmRJbmRleCA9IHRoaXMuX2ZpbmRHYXBFbmRJbmRleChnYXBTdGFydEluZGV4KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGdhcFN0YXJ0SW5kZXggPSB0aGlzLnRyYWNrZXIuaW5kZXhPZigwLCB0aGlzLmNvbHVtbkluZGV4KTtcblxuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIG1vcmUgZW1wdHkgc3BhY2VzIGluIHRoaXMgcm93IGF0IGFsbCwgbW92ZSBvbiB0byB0aGUgbmV4dCByb3cuXG4gICAgICBpZiAoZ2FwU3RhcnRJbmRleCA9PSAtMSkge1xuICAgICAgICB0aGlzLl9uZXh0Um93KCk7XG4gICAgICAgIGdhcFN0YXJ0SW5kZXggPSB0aGlzLnRyYWNrZXIuaW5kZXhPZigwLCB0aGlzLmNvbHVtbkluZGV4KTtcbiAgICAgICAgZ2FwRW5kSW5kZXggPSB0aGlzLl9maW5kR2FwRW5kSW5kZXgoZ2FwU3RhcnRJbmRleCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBnYXBFbmRJbmRleCA9IHRoaXMuX2ZpbmRHYXBFbmRJbmRleChnYXBTdGFydEluZGV4KTtcblxuICAgICAgLy8gSWYgYSBnYXAgbGFyZ2UgZW5vdWdoIGlzbid0IGZvdW5kLCB3ZSB3YW50IHRvIHN0YXJ0IGxvb2tpbmcgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGN1cnJlbnRcbiAgICAgIC8vIGdhcCBvbiB0aGUgbmV4dCBpdGVyYXRpb24uXG4gICAgICB0aGlzLmNvbHVtbkluZGV4ID0gZ2FwU3RhcnRJbmRleCArIDE7XG5cbiAgICAgIC8vIENvbnRpbnVlIGl0ZXJhdGluZyB1bnRpbCB3ZSBmaW5kIGEgZ2FwIHdpZGUgZW5vdWdoIGZvciB0aGlzIHRpbGUuIFNpbmNlIGdhcEVuZEluZGV4IGlzXG4gICAgICAvLyBleGNsdXNpdmUsIGdhcEVuZEluZGV4IGlzIDAgbWVhbnMgd2UgZGlkbid0IGZpbmQgYSBnYXAgYW5kIHNob3VsZCBjb250aW51ZS5cbiAgICB9IHdoaWxlIChnYXBFbmRJbmRleCAtIGdhcFN0YXJ0SW5kZXggPCB0aWxlQ29scyB8fCBnYXBFbmRJbmRleCA9PSAwKTtcblxuICAgIC8vIElmIHdlIHN0aWxsIGRpZG4ndCBtYW5hZ2UgdG8gZmluZCBhIGdhcCwgZW5zdXJlIHRoYXQgdGhlIGluZGV4IGlzXG4gICAgLy8gYXQgbGVhc3QgemVybyBzbyB0aGUgdGlsZSBkb2Vzbid0IGdldCBwdWxsZWQgb3V0IG9mIHRoZSBncmlkLlxuICAgIHJldHVybiBNYXRoLm1heChnYXBTdGFydEluZGV4LCAwKTtcbiAgfVxuXG4gIC8qKiBNb3ZlIFwiZG93blwiIHRvIHRoZSBuZXh0IHJvdy4gKi9cbiAgcHJpdmF0ZSBfbmV4dFJvdygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbkluZGV4ID0gMDtcbiAgICB0aGlzLnJvd0luZGV4Kys7XG5cbiAgICAvLyBEZWNyZW1lbnQgYWxsIHNwYWNlcyBieSBvbmUgdG8gcmVmbGVjdCBtb3ZpbmcgZG93biBvbmUgcm93LlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmFja2VyLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnRyYWNrZXJbaV0gPSBNYXRoLm1heCgwLCB0aGlzLnRyYWNrZXJbaV0gLSAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIGVuZCBpbmRleCAoZXhjbHVzaXZlKSBvZiBhIGdhcCBnaXZlbiB0aGUgaW5kZXggZnJvbSB3aGljaCB0byBzdGFydCBsb29raW5nLlxuICAgKiBUaGUgZ2FwIGVuZHMgd2hlbiBhIG5vbi16ZXJvIHZhbHVlIGlzIGZvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmluZEdhcEVuZEluZGV4KGdhcFN0YXJ0SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgZm9yIChsZXQgaSA9IGdhcFN0YXJ0SW5kZXggKyAxOyBpIDwgdGhpcy50cmFja2VyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy50cmFja2VyW2ldICE9IDApIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIGdhcCBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgcm93LlxuICAgIHJldHVybiB0aGlzLnRyYWNrZXIubGVuZ3RoO1xuICB9XG5cbiAgLyoqIFVwZGF0ZSB0aGUgdGlsZSB0cmFja2VyIHRvIGFjY291bnQgZm9yIHRoZSBnaXZlbiB0aWxlIGluIHRoZSBnaXZlbiBzcGFjZS4gKi9cbiAgcHJpdmF0ZSBfbWFya1RpbGVQb3NpdGlvbihzdGFydDogbnVtYmVyLCB0aWxlOiBUaWxlKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlLmNvbHNwYW47IGkrKykge1xuICAgICAgdGhpcy50cmFja2VyW3N0YXJ0ICsgaV0gPSB0aWxlLnJvd3NwYW47XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU2ltcGxlIGRhdGEgc3RydWN0dXJlIGZvciB0aWxlIHBvc2l0aW9uIChyb3csIGNvbCkuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBUaWxlUG9zaXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcm93OiBudW1iZXIsXG4gICAgcHVibGljIGNvbDogbnVtYmVyLFxuICApIHt9XG59XG4iXX0=
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* RegExp that can be used to check whether a value will
|
|
10
|
-
* be allowed inside a CSS `calc()` expression.
|
|
11
|
-
*/
|
|
12
|
-
const cssCalcAllowedValue = /^-?\d+((\.\d+)?[A-Za-z%$]?)+$/;
|
|
13
|
-
/**
|
|
14
|
-
* Sets the style properties for an individual tile, given the position calculated by the
|
|
15
|
-
* Tile Coordinator.
|
|
16
|
-
* @docs-private
|
|
17
|
-
*/
|
|
18
|
-
export class TileStyler {
|
|
19
|
-
constructor() {
|
|
20
|
-
this._rows = 0;
|
|
21
|
-
this._rowspan = 0;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Adds grid-list layout info once it is available. Cannot be processed in the constructor
|
|
25
|
-
* because these properties haven't been calculated by that point.
|
|
26
|
-
*
|
|
27
|
-
* @param gutterSize Size of the grid's gutter.
|
|
28
|
-
* @param tracker Instance of the TileCoordinator.
|
|
29
|
-
* @param cols Amount of columns in the grid.
|
|
30
|
-
* @param direction Layout direction of the grid.
|
|
31
|
-
*/
|
|
32
|
-
init(gutterSize, tracker, cols, direction) {
|
|
33
|
-
this._gutterSize = normalizeUnits(gutterSize);
|
|
34
|
-
this._rows = tracker.rowCount;
|
|
35
|
-
this._rowspan = tracker.rowspan;
|
|
36
|
-
this._cols = cols;
|
|
37
|
-
this._direction = direction;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Computes the amount of space a single 1x1 tile would take up (width or height).
|
|
41
|
-
* Used as a basis for other calculations.
|
|
42
|
-
* @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.
|
|
43
|
-
* @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.
|
|
44
|
-
* @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().
|
|
45
|
-
*/
|
|
46
|
-
getBaseTileSize(sizePercent, gutterFraction) {
|
|
47
|
-
// Take the base size percent (as would be if evenly dividing the size between cells),
|
|
48
|
-
// and then subtracting the size of one gutter. However, since there are no gutters on the
|
|
49
|
-
// edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter
|
|
50
|
-
// size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the
|
|
51
|
-
// edge evenly among the cells).
|
|
52
|
-
return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.
|
|
56
|
-
* @param offset Number of tiles that have already been rendered in the row/column.
|
|
57
|
-
* @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).
|
|
58
|
-
* @return Position of the tile as a CSS calc() expression.
|
|
59
|
-
*/
|
|
60
|
-
getTilePosition(baseSize, offset) {
|
|
61
|
-
// The position comes the size of a 1x1 tile plus gutter for each previous tile in the
|
|
62
|
-
// row/column (offset).
|
|
63
|
-
return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.
|
|
67
|
-
* @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).
|
|
68
|
-
* @param span The tile's rowspan or colspan.
|
|
69
|
-
* @return Size of the tile as a CSS calc() expression.
|
|
70
|
-
*/
|
|
71
|
-
getTileSize(baseSize, span) {
|
|
72
|
-
return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Sets the style properties to be applied to a tile for the given row and column index.
|
|
76
|
-
* @param tile Tile to which to apply the styling.
|
|
77
|
-
* @param rowIndex Index of the tile's row.
|
|
78
|
-
* @param colIndex Index of the tile's column.
|
|
79
|
-
*/
|
|
80
|
-
setStyle(tile, rowIndex, colIndex) {
|
|
81
|
-
// Percent of the available horizontal space that one column takes up.
|
|
82
|
-
let percentWidthPerTile = 100 / this._cols;
|
|
83
|
-
// Fraction of the vertical gutter size that each column takes up.
|
|
84
|
-
// For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.
|
|
85
|
-
let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;
|
|
86
|
-
this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);
|
|
87
|
-
this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);
|
|
88
|
-
}
|
|
89
|
-
/** Sets the horizontal placement of the tile in the list. */
|
|
90
|
-
setColStyles(tile, colIndex, percentWidth, gutterWidth) {
|
|
91
|
-
// Base horizontal size of a column.
|
|
92
|
-
let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);
|
|
93
|
-
// The width and horizontal position of each tile is always calculated the same way, but the
|
|
94
|
-
// height and vertical position depends on the rowMode.
|
|
95
|
-
let side = this._direction === 'rtl' ? 'right' : 'left';
|
|
96
|
-
tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));
|
|
97
|
-
tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Calculates the total size taken up by gutters across one axis of a list.
|
|
101
|
-
*/
|
|
102
|
-
getGutterSpan() {
|
|
103
|
-
return `${this._gutterSize} * (${this._rowspan} - 1)`;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Calculates the total size taken up by tiles across one axis of a list.
|
|
107
|
-
* @param tileHeight Height of the tile.
|
|
108
|
-
*/
|
|
109
|
-
getTileSpan(tileHeight) {
|
|
110
|
-
return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Calculates the computed height and returns the correct style property to set.
|
|
114
|
-
* This method can be implemented by each type of TileStyler.
|
|
115
|
-
* @docs-private
|
|
116
|
-
*/
|
|
117
|
-
getComputedHeight() {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* This type of styler is instantiated when the user passes in a fixed row height.
|
|
123
|
-
* Example `<mat-grid-list cols="3" rowHeight="100px">`
|
|
124
|
-
* @docs-private
|
|
125
|
-
*/
|
|
126
|
-
export class FixedTileStyler extends TileStyler {
|
|
127
|
-
constructor(fixedRowHeight) {
|
|
128
|
-
super();
|
|
129
|
-
this.fixedRowHeight = fixedRowHeight;
|
|
130
|
-
}
|
|
131
|
-
init(gutterSize, tracker, cols, direction) {
|
|
132
|
-
super.init(gutterSize, tracker, cols, direction);
|
|
133
|
-
this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);
|
|
134
|
-
if (!cssCalcAllowedValue.test(this.fixedRowHeight) &&
|
|
135
|
-
(typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
136
|
-
throw Error(`Invalid value "${this.fixedRowHeight}" set as rowHeight.`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
setRowStyles(tile, rowIndex) {
|
|
140
|
-
tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));
|
|
141
|
-
tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));
|
|
142
|
-
}
|
|
143
|
-
getComputedHeight() {
|
|
144
|
-
return ['height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)];
|
|
145
|
-
}
|
|
146
|
-
reset(list) {
|
|
147
|
-
list._setListStyle(['height', null]);
|
|
148
|
-
if (list._tiles) {
|
|
149
|
-
list._tiles.forEach(tile => {
|
|
150
|
-
tile._setStyle('top', null);
|
|
151
|
-
tile._setStyle('height', null);
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* This type of styler is instantiated when the user passes in a width:height ratio
|
|
158
|
-
* for the row height. Example `<mat-grid-list cols="3" rowHeight="3:1">`
|
|
159
|
-
* @docs-private
|
|
160
|
-
*/
|
|
161
|
-
export class RatioTileStyler extends TileStyler {
|
|
162
|
-
constructor(value) {
|
|
163
|
-
super();
|
|
164
|
-
this._parseRatio(value);
|
|
165
|
-
}
|
|
166
|
-
setRowStyles(tile, rowIndex, percentWidth, gutterWidth) {
|
|
167
|
-
let percentHeightPerTile = percentWidth / this.rowHeightRatio;
|
|
168
|
-
this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);
|
|
169
|
-
// Use padding-top and margin-top to maintain the given aspect ratio, as
|
|
170
|
-
// a percentage-based value for these properties is applied versus the *width* of the
|
|
171
|
-
// containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties
|
|
172
|
-
tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));
|
|
173
|
-
tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));
|
|
174
|
-
}
|
|
175
|
-
getComputedHeight() {
|
|
176
|
-
return [
|
|
177
|
-
'paddingBottom',
|
|
178
|
-
calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`),
|
|
179
|
-
];
|
|
180
|
-
}
|
|
181
|
-
reset(list) {
|
|
182
|
-
list._setListStyle(['paddingBottom', null]);
|
|
183
|
-
list._tiles.forEach(tile => {
|
|
184
|
-
tile._setStyle('marginTop', null);
|
|
185
|
-
tile._setStyle('paddingTop', null);
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
_parseRatio(value) {
|
|
189
|
-
const ratioParts = value.split(':');
|
|
190
|
-
if (ratioParts.length !== 2 && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
191
|
-
throw Error(`mat-grid-list: invalid ratio given for row-height: "${value}"`);
|
|
192
|
-
}
|
|
193
|
-
this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* This type of styler is instantiated when the user selects a "fit" row height mode.
|
|
198
|
-
* In other words, the row height will reflect the total height of the container divided
|
|
199
|
-
* by the number of rows. Example `<mat-grid-list cols="3" rowHeight="fit">`
|
|
200
|
-
*
|
|
201
|
-
* @docs-private
|
|
202
|
-
*/
|
|
203
|
-
export class FitTileStyler extends TileStyler {
|
|
204
|
-
setRowStyles(tile, rowIndex) {
|
|
205
|
-
// Percent of the available vertical space that one row takes up.
|
|
206
|
-
let percentHeightPerTile = 100 / this._rowspan;
|
|
207
|
-
// Fraction of the horizontal gutter size that each column takes up.
|
|
208
|
-
let gutterHeightPerTile = (this._rows - 1) / this._rows;
|
|
209
|
-
// Base vertical size of a column.
|
|
210
|
-
let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);
|
|
211
|
-
tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));
|
|
212
|
-
tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));
|
|
213
|
-
}
|
|
214
|
-
reset(list) {
|
|
215
|
-
if (list._tiles) {
|
|
216
|
-
list._tiles.forEach(tile => {
|
|
217
|
-
tile._setStyle('top', null);
|
|
218
|
-
tile._setStyle('height', null);
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/** Wraps a CSS string in a calc function */
|
|
224
|
-
function calc(exp) {
|
|
225
|
-
return `calc(${exp})`;
|
|
226
|
-
}
|
|
227
|
-
/** Appends pixels to a CSS string if no units are given. */
|
|
228
|
-
function normalizeUnits(value) {
|
|
229
|
-
return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;
|
|
230
|
-
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1zdHlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvZ3JpZC1saXN0L3RpbGUtc3R5bGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1IOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsK0JBQStCLENBQUM7QUFRNUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBZ0IsVUFBVTtJQUFoQztRQUVFLFVBQUssR0FBVyxDQUFDLENBQUM7UUFDbEIsYUFBUSxHQUFXLENBQUMsQ0FBQztJQW1JdkIsQ0FBQztJQS9IQzs7Ozs7Ozs7T0FRRztJQUNILElBQUksQ0FBQyxVQUFrQixFQUFFLE9BQXdCLEVBQUUsSUFBWSxFQUFFLFNBQWlCO1FBQ2hGLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGVBQWUsQ0FBQyxXQUFtQixFQUFFLGNBQXNCO1FBQ3pELHNGQUFzRjtRQUN0RiwwRkFBMEY7UUFDMUYsNEZBQTRGO1FBQzVGLDBGQUEwRjtRQUMxRixnQ0FBZ0M7UUFDaEMsT0FBTyxJQUFJLFdBQVcsUUFBUSxJQUFJLENBQUMsV0FBVyxNQUFNLGNBQWMsSUFBSSxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxRQUFnQixFQUFFLE1BQWM7UUFDOUMsc0ZBQXNGO1FBQ3RGLHVCQUF1QjtRQUN2QixPQUFPLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxD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LElBQXFCO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsNENBQTRDO0FBQzVDLFNBQVMsSUFBSSxDQUFDLEdBQVc7SUFDdkIsT0FBTyxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBUyxjQUFjLENBQUMsS0FBYTtJQUNuQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0R3JpZFRpbGV9IGZyb20gJy4vZ3JpZC10aWxlJztcbmltcG9ydCB7VGlsZUNvb3JkaW5hdG9yfSBmcm9tICcuL3RpbGUtY29vcmRpbmF0b3InO1xuXG4vKipcbiAqIFJlZ0V4cCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSB2YWx1ZSB3aWxsXG4gKiBiZSBhbGxvd2VkIGluc2lkZSBhIENTUyBgY2FsYygpYCBleHByZXNzaW9uLlxuICovXG5jb25zdCBjc3NDYWxjQWxsb3dlZFZhbHVlID0gL14tP1xcZCsoKFxcLlxcZCspP1tBLVphLXolJF0/KSskLztcblxuLyoqIE9iamVjdCB0aGF0IGNhbiBiZSBzdHlsZWQgYnkgdGhlIGBUaWxlU3R5bGVyYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGlsZVN0eWxlVGFyZ2V0IHtcbiAgX3NldExpc3RTdHlsZShzdHlsZTogW3N0cmluZywgc3RyaW5nIHwgbnVsbF0gfCBudWxsKTogdm9pZDtcbiAgX3RpbGVzOiBRdWVyeUxpc3Q8TWF0R3JpZFRpbGU+O1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHN0eWxlIHByb3BlcnRpZXMgZm9yIGFuIGluZGl2aWR1YWwgdGlsZSwgZ2l2ZW4gdGhlIHBvc2l0aW9uIGNhbGN1bGF0ZWQgYnkgdGhlXG4gKiBUaWxlIENvb3JkaW5hdG9yLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGlsZVN0eWxlciB7XG4gIF9ndXR0ZXJTaXplOiBzdHJpbmc7XG4gIF9yb3dzOiBudW1iZXIgPSAwO1xuICBfcm93c3BhbjogbnVtYmVyID0gMDtcbiAgX2NvbHM6IG51bWJlcjtcbiAgX2RpcmVjdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRzIGdyaWQtbGlzdCBsYXlvdXQgaW5mbyBvbmNlIGl0IGlzIGF2YWlsYWJsZS4gQ2Fubm90IGJlIHByb2Nlc3NlZCBpbiB0aGUgY29uc3RydWN0b3JcbiAgICogYmVjYXVzZSB0aGVzZSBwcm9wZXJ0aWVzIGhhdmVuJ3QgYmVlbiBjYWxjdWxhdGVkIGJ5IHRoYXQgcG9pbnQuXG4gICAqXG4gICAqIEBwYXJhbSBndXR0ZXJTaXplIFNpemUgb2YgdGhlIGdyaWQncyBndXR0ZXIuXG4gICAqIEBwYXJhbSB0cmFja2VyIEluc3RhbmNlIG9mIHRoZSBUaWxlQ29vcmRpbmF0b3IuXG4gICAqIEBwYXJhbSBjb2xzIEFtb3VudCBvZiBjb2x1bW5zIGluIHRoZSBncmlkLlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uIExheW91dCBkaXJlY3Rpb24gb2YgdGhlIGdyaWQuXG4gICAqL1xuICBpbml0KGd1dHRlclNpemU6IHN0cmluZywgdHJhY2tlcjogVGlsZUNvb3JkaW5hdG9yLCBjb2xzOiBudW1iZXIsIGRpcmVjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fZ3V0dGVyU2l6ZSA9IG5vcm1hbGl6ZVVuaXRzKGd1dHRlclNpemUpO1xuICAgIHRoaXMuX3Jvd3MgPSB0cmFja2VyLnJvd0NvdW50O1xuICAgIHRoaXMuX3Jvd3NwYW4gPSB0cmFja2VyLnJvd3NwYW47XG4gICAgdGhpcy5fY29scyA9IGNvbHM7XG4gICAgdGhpcy5fZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBhbW91bnQgb2Ygc3BhY2UgYSBzaW5nbGUgMXgxIHRpbGUgd291bGQgdGFrZSB1cCAod2lkdGggb3IgaGVpZ2h0KS5cbiAgICogVXNlZCBhcyBhIGJhc2lzIGZvciBvdGhlciBjYWxjdWxhdGlvbnMuXG4gICAqIEBwYXJhbSBzaXplUGVyY2VudCBQZXJjZW50IG9mIHRoZSB0b3RhbCBncmlkLWxpc3Qgc3BhY2UgdGhhdCBvbmUgMXgxIHRpbGUgd291bGQgdGFrZSB1cC5cbiAgICogQHBhcmFtIGd1dHRlckZyYWN0aW9uIEZyYWN0aW9uIG9mIHRoZSBndXR0ZXIgc2l6ZSB0YWtlbiB1cCBieSBvbmUgMXgxIHRpbGUuXG4gICAqIEByZXR1cm4gVGhlIHNpemUgb2YgYSAxeDEgdGlsZSBhcyBhbiBleHByZXNzaW9uIHRoYXQgY2FuIGJlIGV2YWx1YXRlZCB2aWEgQ1NTIGNhbGMoKS5cbiAgICovXG4gIGdldEJhc2VUaWxlU2l6ZShzaXplUGVyY2VudDogbnVtYmVyLCBndXR0ZXJGcmFjdGlvbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyBUYWtlIHRoZSBiYXNlIHNpemUgcGVyY2VudCAoYXMgd291bGQgYmUgaWYgZXZlbmx5IGRpdmlkaW5nIHRoZSBzaXplIGJldHdlZW4gY2VsbHMpLFxuICAgIC8vIGFuZCB0aGVuIHN1YnRyYWN0aW5nIHRoZSBzaXplIG9mIG9uZSBndXR0ZXIuIEhvd2V2ZXIsIHNpbmNlIHRoZXJlIGFyZSBubyBndXR0ZXJzIG9uIHRoZVxuICAgIC8vIGVkZ2VzLCBlYWNoIHRpbGUgb25seSB1c2VzIGEgZnJhY3Rpb24gKGd1dHRlclNoYXJlID0gbnVtR3V0dGVycyAvIG51bUNlbGxzKSBvZiB0aGUgZ3V0dGVyXG4gICAgLy8gc2l6ZS4gKEltYWdpbmUgaGF2aW5nIG9uZSBndXR0ZXIgcGVyIHRpbGUsIGFuZCB0aGVuIGJyZWFraW5nIHVwIHRoZSBleHRyYSBndXR0ZXIgb24gdGhlXG4gICAgLy8gZWRnZSBldmVubHkgYW1vbmcgdGhlIGNlbGxzKS5cbiAgICByZXR1cm4gYCgke3NpemVQZXJjZW50fSUgLSAoJHt0aGlzLl9ndXR0ZXJTaXplfSAqICR7Z3V0dGVyRnJhY3Rpb259KSlgO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgVGhlIGhvcml6b250YWwgb3IgdmVydGljYWwgcG9zaXRpb24gb2YgYSB0aWxlLCBlLmcuLCB0aGUgJ3RvcCcgb3IgJ2xlZnQnIHByb3BlcnR5IHZhbHVlLlxuICAgKiBAcGFyYW0gb2Zmc2V0IE51bWJlciBvZiB0aWxlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHJlbmRlcmVkIGluIHRoZSByb3cvY29sdW1uLlxuICAgKiBAcGFyYW0gYmFzZVNpemUgQmFzZSBzaXplIG9mIGEgMXgxIHRpbGUgKGFzIGNvbXB1dGVkIGluIGdldEJhc2VUaWxlU2l6ZSkuXG4gICAqIEByZXR1cm4gUG9zaXRpb24gb2YgdGhlIHRpbGUgYXMgYSBDU1MgY2FsYygpIGV4cHJlc3Npb24uXG4gICAqL1xuICBnZXRUaWxlUG9zaXRpb24oYmFzZVNpemU6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIC8vIFRoZSBwb3NpdGlvbiBjb21lcyB0aGUgc2l6ZSBvZiBhIDF4MSB0aWxlIHBsdXMgZ3V0dGVyIGZvciBlYWNoIHByZXZpb3VzIHRpbGUgaW4gdGhlXG4gICAgLy8gcm93L2NvbHVtbiAob2Zmc2V0KS5cbiAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gJzAnIDogY2FsYyhgKCR7YmFzZVNpemV9ICsgJHt0aGlzLl9ndXR0ZXJTaXplfSkgKiAke29mZnNldH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBhY3R1YWwgc2l6ZSBvZiBhIHRpbGUsIGUuZy4sIHdpZHRoIG9yIGhlaWdodCwgdGFraW5nIHJvd3NwYW4gb3IgY29sc3BhbiBpbnRvIGFjY291bnQuXG4gICAqIEBwYXJhbSBiYXNlU2l6ZSBCYXNlIHNpemUgb2YgYSAxeDEgdGlsZSAoYXMgY29tcHV0ZWQgaW4gZ2V0QmFzZVRpbGVTaXplKS5cbiAgICogQHBhcmFtIHNwYW4gVGhlIHRpbGUncyByb3dzcGFuIG9yIGNvbHNwYW4uXG4gICAqIEByZXR1cm4gU2l6ZSBvZiB0aGUgdGlsZSBhcyBhIENTUyBjYWxjKCkgZXhwcmVzc2lvbi5cbiAgICovXG4gIGdldFRpbGVTaXplKGJhc2VTaXplOiBzdHJpbmcsIHNwYW46IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAoJHtiYXNlU2l6ZX0gKiAke3NwYW59KSArICgke3NwYW4gLSAxfSAqICR7dGhpcy5fZ3V0dGVyU2l6ZX0pYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdHlsZSBwcm9wZXJ0aWVzIHRvIGJlIGFwcGxpZWQgdG8gYSB0aWxlIGZvciB0aGUgZ2l2ZW4gcm93IGFuZCBjb2x1bW4gaW5kZXguXG4gICAqIEBwYXJhbSB0aWxlIFRpbGUgdG8gd2hpY2ggdG8gYXBwbHkgdGhlIHN0eWxpbmcuXG4gICAqIEBwYXJhbSByb3dJbmRleCBJbmRleCBvZiB0aGUgdGlsZSdzIHJvdy5cbiAgICogQHBhcmFtIGNvbEluZGV4IEluZGV4IG9mIHRoZSB0aWxlJ3MgY29sdW1uLlxuICAgKi9cbiAgc2V0U3R5bGUodGlsZTogTWF0R3JpZFRpbGUsIHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBQZXJjZW50IG9mIHRoZSBhdmFpbGFibGUgaG9yaXpvbnRhbCBzcGFjZSB0aGF0IG9uZSBjb2x1bW4gdGFrZXMgdXAuXG4gICAgbGV0IHBlcmNlbnRXaWR0aFBlclRpbGUgPSAxMDAgLyB0aGlzLl9jb2xzO1xuXG4gICAgLy8gRnJhY3Rpb24gb2YgdGhlIHZlcnRpY2FsIGd1dHRlciBzaXplIHRoYXQgZWFjaCBjb2x1bW4gdGFrZXMgdXAuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGlmIHRoZXJlIGFyZSA1IGNvbHVtbnMsIGVhY2ggY29sdW1uIHVzZXMgNC81ID0gMC44IHRpbWVzIHRoZSBndXR0ZXIgd2lkdGguXG4gICAgbGV0IGd1dHRlcldpZHRoRnJhY3Rpb25QZXJUaWxlID0gKHRoaXMuX2NvbHMgLSAxKSAvIHRoaXMuX2NvbHM7XG5cbiAgICB0aGlzLnNldENvbFN0eWxlcyh0aWxlLCBjb2xJbmRleCwgcGVyY2VudFdpZHRoUGVyVGlsZSwgZ3V0dGVyV2lkdGhGcmFjdGlvblBlclRpbGUpO1xuICAgIHRoaXMuc2V0Um93U3R5bGVzKHRpbGUsIHJvd0luZGV4LCBwZXJjZW50V2lkdGhQZXJUaWxlLCBndXR0ZXJXaWR0aEZyYWN0aW9uUGVyVGlsZSk7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgaG9yaXpvbnRhbCBwbGFjZW1lbnQgb2YgdGhlIHRpbGUgaW4gdGhlIGxpc3QuICovXG4gIHNldENvbFN0eWxlcyh0aWxlOiBNYXRHcmlkVGlsZSwgY29sSW5kZXg6IG51bWJlciwgcGVyY2VudFdpZHRoOiBudW1iZXIsIGd1dHRlcldpZHRoOiBudW1iZXIpIHtcbiAgICAvLyBCYXNlIGhvcml6b250YWwgc2l6ZSBvZiBhIGNvbHVtbi5cbiAgICBsZXQgYmFzZVRpbGVXaWR0aCA9IHRoaXMuZ2V0QmFzZVRpbGVTaXplKHBlcmNlbnRXaWR0aCwgZ3V0dGVyV2lkdGgpO1xuXG4gICAgLy8gVGhlIHdpZHRoIGFuZCBob3Jpem9udGFsIHBvc2l0aW9uIG9mIGVhY2ggdGlsZSBpcyBhbHdheXMgY2FsY3VsYXRlZCB0aGUgc2FtZSB3YXksIGJ1dCB0aGVcbiAgICAvLyBoZWlnaHQgYW5kIHZlcnRpY2FsIHBvc2l0aW9uIGRlcGVuZHMgb24gdGhlIHJvd01vZGUuXG4gICAgbGV0IHNpZGUgPSB0aGlzLl9kaXJlY3Rpb24gPT09ICdydGwnID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICB0aWxlLl9zZXRTdHlsZShzaWRlLCB0aGlzLmdldFRpbGVQb3NpdGlvbihiYXNlVGlsZVdpZHRoLCBjb2xJbmRleCkpO1xuICAgIHRpbGUuX3NldFN0eWxlKCd3aWR0aCcsIGNhbGModGhpcy5nZXRUaWxlU2l6ZShiYXNlVGlsZVdpZHRoLCB0aWxlLmNvbHNwYW4pKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgc2l6ZSB0YWtlbiB1cCBieSBndXR0ZXJzIGFjcm9zcyBvbmUgYXhpcyBvZiBhIGxpc3QuXG4gICAqL1xuICBnZXRHdXR0ZXJTcGFuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX2d1dHRlclNpemV9ICogKCR7dGhpcy5fcm93c3Bhbn0gLSAxKWA7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgc2l6ZSB0YWtlbiB1cCBieSB0aWxlcyBhY3Jvc3Mgb25lIGF4aXMgb2YgYSBsaXN0LlxuICAgKiBAcGFyYW0gdGlsZUhlaWdodCBIZWlnaHQgb2YgdGhlIHRpbGUuXG4gICAqL1xuICBnZXRUaWxlU3Bhbih0aWxlSGVpZ2h0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLl9yb3dzcGFufSAqICR7dGhpcy5nZXRUaWxlU2l6ZSh0aWxlSGVpZ2h0LCAxKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZlcnRpY2FsIHBsYWNlbWVudCBvZiB0aGUgdGlsZSBpbiB0aGUgbGlzdC5cbiAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBpbXBsZW1lbnRlZCBieSBlYWNoIHR5cGUgb2YgVGlsZVN0eWxlci5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgYWJzdHJhY3Qgc2V0Um93U3R5bGVzKFxuICAgIHRpbGU6IE1hdEdyaWRUaWxlLFxuICAgIHJvd0luZGV4OiBudW1iZXIsXG4gICAgcGVyY2VudFdpZHRoOiBudW1iZXIsXG4gICAgZ3V0dGVyV2lkdGg6IG51bWJlcixcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgY29tcHV0ZWQgaGVpZ2h0IGFuZCByZXR1cm5zIHRoZSBjb3JyZWN0IHN0eWxlIHByb3BlcnR5IHRvIHNldC5cbiAgICogVGhpcyBtZXRob2QgY2FuIGJlIGltcGxlbWVudGVkIGJ5IGVhY2ggdHlwZSBvZiBUaWxlU3R5bGVyLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBnZXRDb21wdXRlZEhlaWdodCgpOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHRpbGUgc3R5bGVyIGlzIHN3YXBwZWQgb3V0IHdpdGggYSBkaWZmZXJlbnQgb25lLiBUbyBiZSB1c2VkIGZvciBjbGVhbnVwLlxuICAgKiBAcGFyYW0gbGlzdCBHcmlkIGxpc3QgdGhhdCB0aGUgc3R5bGVyIHdhcyBhdHRhY2hlZCB0by5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVzZXQobGlzdDogVGlsZVN0eWxlVGFyZ2V0KTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGlzIHR5cGUgb2Ygc3R5bGVyIGlzIGluc3RhbnRpYXRlZCB3aGVuIHRoZSB1c2VyIHBhc3NlcyBpbiBhIGZpeGVkIHJvdyBoZWlnaHQuXG4gKiBFeGFtcGxlIGA8bWF0LWdyaWQtbGlzdCBjb2xzPVwiM1wiIHJvd0hlaWdodD1cIjEwMHB4XCI+YFxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgRml4ZWRUaWxlU3R5bGVyIGV4dGVuZHMgVGlsZVN0eWxlciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaXhlZFJvd0hlaWdodDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGluaXQoZ3V0dGVyU2l6ZTogc3RyaW5nLCB0cmFja2VyOiBUaWxlQ29vcmRpbmF0b3IsIGNvbHM6IG51bWJlciwgZGlyZWN0aW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlci5pbml0KGd1dHRlclNpemUsIHRyYWNrZXIsIGNvbHMsIGRpcmVjdGlvbik7XG4gICAgdGhpcy5maXhlZFJvd0hlaWdodCA9IG5vcm1hbGl6ZVVuaXRzKHRoaXMuZml4ZWRSb3dIZWlnaHQpO1xuXG4gICAgaWYgKFxuICAgICAgIWNzc0NhbGNBbGxvd2VkVmFsdWUudGVzdCh0aGlzLmZpeGVkUm93SGVpZ2h0KSAmJlxuICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSlcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIHZhbHVlIFwiJHt0aGlzLmZpeGVkUm93SGVpZ2h0fVwiIHNldCBhcyByb3dIZWlnaHQuYCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgc2V0Um93U3R5bGVzKHRpbGU6IE1hdEdyaWRUaWxlLCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGlsZS5fc2V0U3R5bGUoJ3RvcCcsIHRoaXMuZ2V0VGlsZVBvc2l0aW9uKHRoaXMuZml4ZWRSb3dIZWlnaHQsIHJvd0luZGV4KSk7XG4gICAgdGlsZS5fc2V0U3R5bGUoJ2hlaWdodCcsIGNhbGModGhpcy5nZXRUaWxlU2l6ZSh0aGlzLmZpeGVkUm93SGVpZ2h0LCB0aWxlLnJvd3NwYW4pKSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRDb21wdXRlZEhlaWdodCgpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgICByZXR1cm4gWydoZWlnaHQnLCBjYWxjKGAke3RoaXMuZ2V0VGlsZVNwYW4odGhpcy5maXhlZFJvd0hlaWdodCl9ICsgJHt0aGlzLmdldEd1dHRlclNwYW4oKX1gKV07XG4gIH1cblxuICBvdmVycmlkZSByZXNldChsaXN0OiBUaWxlU3R5bGVUYXJnZXQpIHtcbiAgICBsaXN0Ll9zZXRMaXN0U3R5bGUoWydoZWlnaHQnLCBudWxsXSk7XG5cbiAgICBpZiAobGlzdC5fdGlsZXMpIHtcbiAgICAgIGxpc3QuX3RpbGVzLmZvckVhY2godGlsZSA9PiB7XG4gICAgICAgIHRpbGUuX3NldFN0eWxlKCd0b3AnLCBudWxsKTtcbiAgICAgICAgdGlsZS5fc2V0U3R5bGUoJ2hlaWdodCcsIG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyB0eXBlIG9mIHN0eWxlciBpcyBpbnN0YW50aWF0ZWQgd2hlbiB0aGUgdXNlciBwYXNzZXMgaW4gYSB3aWR0aDpoZWlnaHQgcmF0aW9cbiAqIGZvciB0aGUgcm93IGhlaWdodC4gIEV4YW1wbGUgYDxtYXQtZ3JpZC1saXN0IGNvbHM9XCIzXCIgcm93SGVpZ2h0PVwiMzoxXCI+YFxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgUmF0aW9UaWxlU3R5bGVyIGV4dGVuZHMgVGlsZVN0eWxlciB7XG4gIC8qKiBSYXRpbyB3aWR0aDpoZWlnaHQgZ2l2ZW4gYnkgdXNlciB0byBkZXRlcm1pbmUgcm93IGhlaWdodC4gKi9cbiAgcm93SGVpZ2h0UmF0aW86IG51bWJlcjtcbiAgYmFzZVRpbGVIZWlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9wYXJzZVJhdGlvKHZhbHVlKTtcbiAgfVxuXG4gIHNldFJvd1N0eWxlcyhcbiAgICB0aWxlOiBNYXRHcmlkVGlsZSxcbiAgICByb3dJbmRleDogbnVtYmVyLFxuICAgIHBlcmNlbnRXaWR0aDogbnVtYmVyLFxuICAgIGd1dHRlcldpZHRoOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIGxldCBwZXJjZW50SGVpZ2h0UGVyVGlsZSA9IHBlcmNlbnRXaWR0aCAvIHRoaXMucm93SGVpZ2h0UmF0aW87XG4gICAgdGhpcy5iYXNlVGlsZUhlaWdodCA9IHRoaXMuZ2V0QmFzZVRpbGVTaXplKHBlcmNlbnRIZWlnaHRQZXJUaWxlLCBndXR0ZXJXaWR0aCk7XG5cbiAgICAvLyBVc2UgcGFkZGluZy10b3AgYW5kIG1hcmdpbi10b3AgdG8gbWFpbnRhaW4gdGhlIGdpdmVuIGFzcGVjdCByYXRpbywgYXNcbiAgICAvLyBhIHBlcmNlbnRhZ2UtYmFzZWQgdmFsdWUgZm9yIHRoZXNlIHByb3BlcnRpZXMgaXMgYXBwbGllZCB2ZXJzdXMgdGhlICp3aWR0aCogb2YgdGhlXG4gICAgLy8gY29udGFpbmluZyBibG9jay4gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIvYm94Lmh0bWwjbWFyZ2luLXByb3BlcnRpZXNcbiAgICB0aWxlLl9zZXRTdHlsZSgnbWFyZ2luVG9wJywgdGhpcy5nZXRUaWxlUG9zaXRpb24odGhpcy5iYXNlVGlsZUhlaWdodCwgcm93SW5kZXgpKTtcbiAgICB0aWxlLl9zZXRTdHlsZSgncGFkZGluZ1RvcCcsIGNhbGModGhpcy5nZXRUaWxlU2l6ZSh0aGlzLmJhc2VUaWxlSGVpZ2h0LCB0aWxlLnJvd3NwYW4pKSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRDb21wdXRlZEhlaWdodCgpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3BhZGRpbmdCb3R0b20nLFxuICAgICAgY2FsYyhgJHt0aGlzLmdldFRpbGVTcGFuKHRoaXMuYmFzZVRpbGVIZWlnaHQpfSArICR7dGhpcy5nZXRHdXR0ZXJTcGFuKCl9YCksXG4gICAgXTtcbiAgfVxuXG4gIHJlc2V0KGxpc3Q6IFRpbGVTdHlsZVRhcmdldCkge1xuICAgIGxpc3QuX3NldExpc3RTdHlsZShbJ3BhZGRpbmdCb3R0b20nLCBudWxsXSk7XG5cbiAgICBsaXN0Ll90aWxlcy5mb3JFYWNoKHRpbGUgPT4ge1xuICAgICAgdGlsZS5fc2V0U3R5bGUoJ21hcmdpblRvcCcsIG51bGwpO1xuICAgICAgdGlsZS5fc2V0U3R5bGUoJ3BhZGRpbmdUb3AnLCBudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlUmF0aW8odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJhdGlvUGFydHMgPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKHJhdGlvUGFydHMubGVuZ3RoICE9PSAyICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgbWF0LWdyaWQtbGlzdDogaW52YWxpZCByYXRpbyBnaXZlbiBmb3Igcm93LWhlaWdodDogXCIke3ZhbHVlfVwiYCk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dIZWlnaHRSYXRpbyA9IHBhcnNlRmxvYXQocmF0aW9QYXJ0c1swXSkgLyBwYXJzZUZsb2F0KHJhdGlvUGFydHNbMV0pO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyB0eXBlIG9mIHN0eWxlciBpcyBpbnN0YW50aWF0ZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgXCJmaXRcIiByb3cgaGVpZ2h0IG1vZGUuXG4gKiBJbiBvdGhlciB3b3JkcywgdGhlIHJvdyBoZWlnaHQgd2lsbCByZWZsZWN0IHRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIGNvbnRhaW5lciBkaXZpZGVkXG4gKiBieSB0aGUgbnVtYmVyIG9mIHJvd3MuICBFeGFtcGxlIGA8bWF0LWdyaWQtbGlzdCBjb2xzPVwiM1wiIHJvd0hlaWdodD1cImZpdFwiPmBcbiAqXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBGaXRUaWxlU3R5bGVyIGV4dGVuZHMgVGlsZVN0eWxlciB7XG4gIHNldFJvd1N0eWxlcyh0aWxlOiBNYXRHcmlkVGlsZSwgcm93SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIFBlcmNlbnQgb2YgdGhlIGF2YWlsYWJsZSB2ZXJ0aWNhbCBzcGFjZSB0aGF0IG9uZSByb3cgdGFrZXMgdXAuXG4gICAgbGV0IHBlcmNlbnRIZWlnaHRQZXJUaWxlID0gMTAwIC8gdGhpcy5fcm93c3BhbjtcblxuICAgIC8vIEZyYWN0aW9uIG9mIHRoZSBob3Jpem9udGFsIGd1dHRlciBzaXplIHRoYXQgZWFjaCBjb2x1bW4gdGFrZXMgdXAuXG4gICAgbGV0IGd1dHRlckhlaWdodFBlclRpbGUgPSAodGhpcy5fcm93cyAtIDEpIC8gdGhpcy5fcm93cztcblxuICAgIC8vIEJhc2UgdmVydGljYWwgc2l6ZSBvZiBhIGNvbHVtbi5cbiAgICBsZXQgYmFzZVRpbGVIZWlnaHQgPSB0aGlzLmdldEJhc2VUaWxlU2l6ZShwZXJjZW50SGVpZ2h0UGVyVGlsZSwgZ3V0dGVySGVpZ2h0UGVyVGlsZSk7XG5cbiAgICB0aWxlLl9zZXRTdHlsZSgndG9wJywgdGhpcy5nZXRUaWxlUG9zaXRpb24oYmFzZVRpbGVIZWlnaHQsIHJvd0luZGV4KSk7XG4gICAgdGlsZS5fc2V0U3R5bGUoJ2hlaWdodCcsIGNhbGModGhpcy5nZXRUaWxlU2l6ZShiYXNlVGlsZUhlaWdodCwgdGlsZS5yb3dzcGFuKSkpO1xuICB9XG5cbiAgcmVzZXQobGlzdDogVGlsZVN0eWxlVGFyZ2V0KSB7XG4gICAgaWYgKGxpc3QuX3RpbGVzKSB7XG4gICAgICBsaXN0Ll90aWxlcy5mb3JFYWNoKHRpbGUgPT4ge1xuICAgICAgICB0aWxlLl9zZXRTdHlsZSgndG9wJywgbnVsbCk7XG4gICAgICAgIHRpbGUuX3NldFN0eWxlKCdoZWlnaHQnLCBudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKiogV3JhcHMgYSBDU1Mgc3RyaW5nIGluIGEgY2FsYyBmdW5jdGlvbiAqL1xuZnVuY3Rpb24gY2FsYyhleHA6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgY2FsYygke2V4cH0pYDtcbn1cblxuLyoqIEFwcGVuZHMgcGl4ZWxzIHRvIGEgQ1NTIHN0cmluZyBpZiBubyB1bml0cyBhcmUgZ2l2ZW4uICovXG5mdW5jdGlvbiBub3JtYWxpemVVbml0cyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLm1hdGNoKC8oW0EtWmEteiVdKykkLykgPyB2YWx1ZSA6IGAke3ZhbHVlfXB4YDtcbn1cbiJdfQ==
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Fake URLs and associated SVG documents used by tests.
|
|
10
|
-
* The ID attribute is used to load the icons, the name attribute is only used for testing.
|
|
11
|
-
* @docs-private
|
|
12
|
-
*/
|
|
13
|
-
export const FAKE_SVGS = {
|
|
14
|
-
cat: '<svg><path id="meow" name="meow"></path></svg>',
|
|
15
|
-
dog: '<svg><path id="woof" name="woof"></path></svg>',
|
|
16
|
-
dogWithSpaces: '<svg><path id="woof says the dog" name="woof"></path></svg>',
|
|
17
|
-
farmSet1: `
|
|
18
|
-
<svg>
|
|
19
|
-
<defs>
|
|
20
|
-
<g id="pig" name="pig"><path name="oink"></path></g>
|
|
21
|
-
<g id="cow" name="cow"><path name="moo"></path></g>
|
|
22
|
-
</defs>
|
|
23
|
-
</svg>
|
|
24
|
-
`,
|
|
25
|
-
farmSet2: `
|
|
26
|
-
<svg>
|
|
27
|
-
<defs>
|
|
28
|
-
<g id="cow" name="cow"><path name="moo moo"></path></g>
|
|
29
|
-
<g id="sheep" name="sheep"><path name="baa"></path></g>
|
|
30
|
-
</defs>
|
|
31
|
-
</svg>
|
|
32
|
-
`,
|
|
33
|
-
farmSet3: `
|
|
34
|
-
<svg>
|
|
35
|
-
<symbol id="duck" name="duck">
|
|
36
|
-
<path id="quack" name="quack"></path>
|
|
37
|
-
</symbol>
|
|
38
|
-
</svg>
|
|
39
|
-
`,
|
|
40
|
-
farmSet4: `
|
|
41
|
-
<svg>
|
|
42
|
-
<defs>
|
|
43
|
-
<g id="pig with spaces" name="pig"><path name="oink"></path></g>
|
|
44
|
-
</defs>
|
|
45
|
-
</svg>
|
|
46
|
-
`,
|
|
47
|
-
farmSet5: `
|
|
48
|
-
<svg>
|
|
49
|
-
<symbol id="duck" viewBox="0 0 13 37">
|
|
50
|
-
<path id="quack" name="quack"></path>
|
|
51
|
-
</symbol>
|
|
52
|
-
</svg>
|
|
53
|
-
`,
|
|
54
|
-
arrows: `
|
|
55
|
-
<svg>
|
|
56
|
-
<defs>
|
|
57
|
-
<svg id="left-arrow" name="left-arrow"><path name="left"></path></svg>
|
|
58
|
-
<svg id="right-arrow" name="right-arrow"><path name="right"></path></svg>
|
|
59
|
-
</defs>
|
|
60
|
-
</svg> `,
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS1zdmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL2ljb24vZmFrZS1zdmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsR0FBRyxFQUFFLGdEQUFnRDtJQUNyRCxHQUFHLEVBQUUsZ0RBQWdEO0lBQ3JELGFBQWEsRUFBRSw2REFBNkQ7SUFDNUUsUUFBUSxFQUFFOzs7Ozs7O0dBT1Q7SUFDRCxRQUFRLEVBQUU7Ozs7Ozs7R0FPVDtJQUNELFFBQVEsRUFBRTs7Ozs7O0dBTVQ7SUFDRCxRQUFRLEVBQUU7Ozs7OztHQU1UO0lBQ0QsUUFBUSxFQUFFOzs7Ozs7R0FNVDtJQUNELE1BQU0sRUFBRTs7Ozs7O2FBTUc7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogRmFrZSBVUkxzIGFuZCBhc3NvY2lhdGVkIFNWRyBkb2N1bWVudHMgdXNlZCBieSB0ZXN0cy5cbiAqIFRoZSBJRCBhdHRyaWJ1dGUgaXMgdXNlZCB0byBsb2FkIHRoZSBpY29ucywgdGhlIG5hbWUgYXR0cmlidXRlIGlzIG9ubHkgdXNlZCBmb3IgdGVzdGluZy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IEZBS0VfU1ZHUyA9IHtcbiAgY2F0OiAnPHN2Zz48cGF0aCBpZD1cIm1lb3dcIiBuYW1lPVwibWVvd1wiPjwvcGF0aD48L3N2Zz4nLFxuICBkb2c6ICc8c3ZnPjxwYXRoIGlkPVwid29vZlwiIG5hbWU9XCJ3b29mXCI+PC9wYXRoPjwvc3ZnPicsXG4gIGRvZ1dpdGhTcGFjZXM6ICc8c3ZnPjxwYXRoIGlkPVwid29vZiBzYXlzIHRoZSBkb2dcIiBuYW1lPVwid29vZlwiPjwvcGF0aD48L3N2Zz4nLFxuICBmYXJtU2V0MTogYFxuICAgIDxzdmc+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPGcgaWQ9XCJwaWdcIiBuYW1lPVwicGlnXCI+PHBhdGggbmFtZT1cIm9pbmtcIj48L3BhdGg+PC9nPlxuICAgICAgICA8ZyBpZD1cImNvd1wiIG5hbWU9XCJjb3dcIj48cGF0aCBuYW1lPVwibW9vXCI+PC9wYXRoPjwvZz5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz5cbiAgYCxcbiAgZmFybVNldDI6IGBcbiAgICA8c3ZnPlxuICAgICAgPGRlZnM+XG4gICAgICAgIDxnIGlkPVwiY293XCIgbmFtZT1cImNvd1wiPjxwYXRoIG5hbWU9XCJtb28gbW9vXCI+PC9wYXRoPjwvZz5cbiAgICAgICAgPGcgaWQ9XCJzaGVlcFwiIG5hbWU9XCJzaGVlcFwiPjxwYXRoIG5hbWU9XCJiYWFcIj48L3BhdGg+PC9nPlxuICAgICAgPC9kZWZzPlxuICAgIDwvc3ZnPlxuICBgLFxuICBmYXJtU2V0MzogYFxuICAgIDxzdmc+XG4gICAgICA8c3ltYm9sIGlkPVwiZHVja1wiIG5hbWU9XCJkdWNrXCI+XG4gICAgICAgIDxwYXRoIGlkPVwicXVhY2tcIiBuYW1lPVwicXVhY2tcIj48L3BhdGg+XG4gICAgICA8L3N5bWJvbD5cbiAgICA8L3N2Zz5cbiAgYCxcbiAgZmFybVNldDQ6IGBcbiAgICA8c3ZnPlxuICAgICAgPGRlZnM+XG4gICAgICAgIDxnIGlkPVwicGlnIHdpdGggc3BhY2VzXCIgbmFtZT1cInBpZ1wiPjxwYXRoIG5hbWU9XCJvaW5rXCI+PC9wYXRoPjwvZz5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz5cbiAgYCxcbiAgZmFybVNldDU6IGBcbiAgICA8c3ZnPlxuICAgICAgPHN5bWJvbCBpZD1cImR1Y2tcIiB2aWV3Qm94PVwiMCAwIDEzIDM3XCI+XG4gICAgICAgIDxwYXRoIGlkPVwicXVhY2tcIiBuYW1lPVwicXVhY2tcIj48L3BhdGg+XG4gICAgICA8L3N5bWJvbD5cbiAgICA8L3N2Zz5cbiAgYCxcbiAgYXJyb3dzOiBgXG4gICAgPHN2Zz5cbiAgICAgIDxkZWZzPlxuICAgICAgICA8c3ZnIGlkPVwibGVmdC1hcnJvd1wiIG5hbWU9XCJsZWZ0LWFycm93XCI+PHBhdGggbmFtZT1cImxlZnRcIj48L3BhdGg+PC9zdmc+XG4gICAgICAgIDxzdmcgaWQ9XCJyaWdodC1hcnJvd1wiIG5hbWU9XCJyaWdodC1hcnJvd1wiPjxwYXRoIG5hbWU9XCJyaWdodFwiPjwvcGF0aD48L3N2Zz5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz4gIGAsXG59O1xuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { NgModule } from '@angular/core';
|
|
9
|
-
import { MatCommonModule } from '@angular/material/core';
|
|
10
|
-
import { MatIcon } from './icon';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class MatIconModule {
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconModule, imports: [MatCommonModule, MatIcon], exports: [MatIcon, MatCommonModule] }); }
|
|
15
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconModule, imports: [MatCommonModule, MatCommonModule] }); }
|
|
16
|
-
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconModule, decorators: [{
|
|
18
|
-
type: NgModule,
|
|
19
|
-
args: [{
|
|
20
|
-
imports: [MatCommonModule, MatIcon],
|
|
21
|
-
exports: [MatIcon, MatCommonModule],
|
|
22
|
-
}]
|
|
23
|
-
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvaWNvbi9pY29uLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDOztBQU0vQixNQUFNLE9BQU8sYUFBYTtxSEFBYixhQUFhO3NIQUFiLGFBQWEsWUFIZCxlQUFlLEVBQUUsT0FBTyxhQUN4QixPQUFPLEVBQUUsZUFBZTtzSEFFdkIsYUFBYSxZQUhkLGVBQWUsRUFDTixlQUFlOztrR0FFdkIsYUFBYTtrQkFKekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnLi9pY29uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW01hdENvbW1vbk1vZHVsZSwgTWF0SWNvbl0sXG4gIGV4cG9ydHM6IFtNYXRJY29uLCBNYXRDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRJY29uTW9kdWxlIHt9XG4iXX0=
|