wcs-core 7.4.0 → 7.4.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.
- package/bundle/index.d.ts +45 -0
- package/bundle/index.js +2 -0
- package/bundle/index.js.map +1 -0
- package/bundle/p-010cf905.js +2 -0
- package/bundle/p-010cf905.js.map +1 -0
- package/bundle/p-2751ddc1.js +2 -0
- package/bundle/p-2751ddc1.js.map +1 -0
- package/bundle/p-2bef72c7.js +2 -0
- package/bundle/p-2bef72c7.js.map +1 -0
- package/bundle/p-2e9b9605.js +2 -0
- package/bundle/p-2e9b9605.js.map +1 -0
- package/bundle/p-35d7af48.js +2 -0
- package/bundle/p-35d7af48.js.map +1 -0
- package/bundle/p-38e45350.js +2 -0
- package/bundle/p-38e45350.js.map +1 -0
- package/bundle/p-3abf8a42.js +2 -0
- package/bundle/p-3abf8a42.js.map +1 -0
- package/bundle/p-44a3b0b9.js +2 -0
- package/bundle/p-44a3b0b9.js.map +1 -0
- package/bundle/p-60193ef5.js +2 -0
- package/bundle/p-60193ef5.js.map +1 -0
- package/bundle/p-6bc981dd.js +156 -0
- package/bundle/p-6bc981dd.js.map +1 -0
- package/bundle/p-763371a0.js +16 -0
- package/bundle/p-763371a0.js.map +1 -0
- package/bundle/p-8bfdf6f6.js +2 -0
- package/bundle/p-8bfdf6f6.js.map +1 -0
- package/bundle/p-97e70e10.js +2 -0
- package/bundle/p-97e70e10.js.map +1 -0
- package/bundle/p-98bd8a96.js +2 -0
- package/bundle/p-98bd8a96.js.map +1 -0
- package/bundle/p-a0f32ead.js +2 -0
- package/bundle/p-a0f32ead.js.map +1 -0
- package/bundle/p-a7468a3a.js +2 -0
- package/bundle/p-a7468a3a.js.map +1 -0
- package/bundle/p-c8b73e93.js +2 -0
- package/bundle/p-c8b73e93.js.map +1 -0
- package/bundle/p-d23d7658.js +2 -0
- package/bundle/p-d23d7658.js.map +1 -0
- package/bundle/p-d3404c52.js +2 -0
- package/bundle/p-d3404c52.js.map +1 -0
- package/bundle/p-e1fb3625.js +2 -0
- package/bundle/p-e1fb3625.js.map +1 -0
- package/bundle/p-f0dda0b8.js +2 -0
- package/bundle/p-f0dda0b8.js.map +1 -0
- package/bundle/p-fb2751c2.js +2 -0
- package/bundle/p-fb2751c2.js.map +1 -0
- package/bundle/p-fc9ba34d.js +2 -0
- package/bundle/p-fc9ba34d.js.map +1 -0
- package/bundle/package.json +8 -0
- package/bundle/wcs-accordion-content.d.ts +11 -0
- package/bundle/wcs-accordion-content.js +2 -0
- package/bundle/wcs-accordion-content.js.map +1 -0
- package/bundle/wcs-accordion-header.d.ts +11 -0
- package/bundle/wcs-accordion-header.js +2 -0
- package/bundle/wcs-accordion-header.js.map +1 -0
- package/bundle/wcs-accordion-panel.d.ts +11 -0
- package/bundle/wcs-accordion-panel.js +2 -0
- package/bundle/wcs-accordion-panel.js.map +1 -0
- package/bundle/wcs-accordion.d.ts +11 -0
- package/bundle/wcs-accordion.js +2 -0
- package/bundle/wcs-accordion.js.map +1 -0
- package/bundle/wcs-action-bar.d.ts +11 -0
- package/bundle/wcs-action-bar.js +2 -0
- package/bundle/wcs-action-bar.js.map +1 -0
- package/bundle/wcs-alert-drawer.d.ts +11 -0
- package/bundle/wcs-alert-drawer.js +2 -0
- package/bundle/wcs-alert-drawer.js.map +1 -0
- package/bundle/wcs-alert.d.ts +11 -0
- package/bundle/wcs-alert.js +2 -0
- package/bundle/wcs-alert.js.map +1 -0
- package/bundle/wcs-app.d.ts +11 -0
- package/bundle/wcs-app.js +2 -0
- package/bundle/wcs-app.js.map +1 -0
- package/bundle/wcs-badge.d.ts +11 -0
- package/bundle/wcs-badge.js +2 -0
- package/bundle/wcs-badge.js.map +1 -0
- package/bundle/wcs-breadcrumb-item.d.ts +11 -0
- package/bundle/wcs-breadcrumb-item.js +2 -0
- package/bundle/wcs-breadcrumb-item.js.map +1 -0
- package/bundle/wcs-breadcrumb.d.ts +11 -0
- package/bundle/wcs-breadcrumb.js +2 -0
- package/bundle/wcs-breadcrumb.js.map +1 -0
- package/bundle/wcs-button.d.ts +11 -0
- package/bundle/wcs-button.js +2 -0
- package/bundle/wcs-button.js.map +1 -0
- package/bundle/wcs-card-body.d.ts +11 -0
- package/bundle/wcs-card-body.js +2 -0
- package/bundle/wcs-card-body.js.map +1 -0
- package/bundle/wcs-card-content.d.ts +11 -0
- package/bundle/wcs-card-content.js +2 -0
- package/bundle/wcs-card-content.js.map +1 -0
- package/bundle/wcs-card-footer.d.ts +11 -0
- package/bundle/wcs-card-footer.js +2 -0
- package/bundle/wcs-card-footer.js.map +1 -0
- package/bundle/wcs-card-header.d.ts +11 -0
- package/bundle/wcs-card-header.js +2 -0
- package/bundle/wcs-card-header.js.map +1 -0
- package/bundle/wcs-card-media.d.ts +11 -0
- package/bundle/wcs-card-media.js +2 -0
- package/bundle/wcs-card-media.js.map +1 -0
- package/bundle/wcs-card.d.ts +11 -0
- package/bundle/wcs-card.js +2 -0
- package/bundle/wcs-card.js.map +1 -0
- package/bundle/wcs-checkbox.d.ts +11 -0
- package/bundle/wcs-checkbox.js +2 -0
- package/bundle/wcs-checkbox.js.map +1 -0
- package/bundle/wcs-chip.d.ts +11 -0
- package/bundle/wcs-chip.js +2 -0
- package/bundle/wcs-chip.js.map +1 -0
- package/bundle/wcs-com-nav-category.d.ts +11 -0
- package/bundle/wcs-com-nav-category.js +2 -0
- package/bundle/wcs-com-nav-category.js.map +1 -0
- package/bundle/wcs-com-nav-item.d.ts +11 -0
- package/bundle/wcs-com-nav-item.js +2 -0
- package/bundle/wcs-com-nav-item.js.map +1 -0
- package/bundle/wcs-com-nav-submenu.d.ts +11 -0
- package/bundle/wcs-com-nav-submenu.js +2 -0
- package/bundle/wcs-com-nav-submenu.js.map +1 -0
- package/bundle/wcs-com-nav.d.ts +11 -0
- package/bundle/wcs-com-nav.js +2 -0
- package/bundle/wcs-com-nav.js.map +1 -0
- package/bundle/wcs-counter.d.ts +11 -0
- package/bundle/wcs-counter.js +2 -0
- package/bundle/wcs-counter.js.map +1 -0
- package/bundle/wcs-divider.d.ts +11 -0
- package/bundle/wcs-divider.js +2 -0
- package/bundle/wcs-divider.js.map +1 -0
- package/bundle/wcs-dropdown-divider.d.ts +11 -0
- package/bundle/wcs-dropdown-divider.js +2 -0
- package/bundle/wcs-dropdown-divider.js.map +1 -0
- package/bundle/wcs-dropdown-header.d.ts +11 -0
- package/bundle/wcs-dropdown-header.js +2 -0
- package/bundle/wcs-dropdown-header.js.map +1 -0
- package/bundle/wcs-dropdown-item.d.ts +11 -0
- package/bundle/wcs-dropdown-item.js +2 -0
- package/bundle/wcs-dropdown-item.js.map +1 -0
- package/bundle/wcs-dropdown.d.ts +11 -0
- package/bundle/wcs-dropdown.js +2 -0
- package/bundle/wcs-dropdown.js.map +1 -0
- package/bundle/wcs-editable-field.d.ts +11 -0
- package/bundle/wcs-editable-field.js +2 -0
- package/bundle/wcs-editable-field.js.map +1 -0
- package/bundle/wcs-error.d.ts +11 -0
- package/bundle/wcs-error.js +2 -0
- package/bundle/wcs-error.js.map +1 -0
- package/bundle/wcs-field-content.d.ts +11 -0
- package/bundle/wcs-field-content.js +2 -0
- package/bundle/wcs-field-content.js.map +1 -0
- package/bundle/wcs-field-label.d.ts +11 -0
- package/bundle/wcs-field-label.js +2 -0
- package/bundle/wcs-field-label.js.map +1 -0
- package/bundle/wcs-field.d.ts +11 -0
- package/bundle/wcs-field.js +2 -0
- package/bundle/wcs-field.js.map +1 -0
- package/bundle/wcs-footer.d.ts +11 -0
- package/bundle/wcs-footer.js +2 -0
- package/bundle/wcs-footer.js.map +1 -0
- package/bundle/wcs-form-field.d.ts +11 -0
- package/bundle/wcs-form-field.js +2 -0
- package/bundle/wcs-form-field.js.map +1 -0
- package/bundle/wcs-galactic-menu.d.ts +11 -0
- package/bundle/wcs-galactic-menu.js +2 -0
- package/bundle/wcs-galactic-menu.js.map +1 -0
- package/bundle/wcs-galactic.d.ts +11 -0
- package/bundle/wcs-galactic.js +2 -0
- package/bundle/wcs-galactic.js.map +1 -0
- package/bundle/wcs-grid-column.d.ts +11 -0
- package/bundle/wcs-grid-column.js +2 -0
- package/bundle/wcs-grid-column.js.map +1 -0
- package/bundle/wcs-grid-custom-cell.d.ts +11 -0
- package/bundle/wcs-grid-custom-cell.js +2 -0
- package/bundle/wcs-grid-custom-cell.js.map +1 -0
- package/bundle/wcs-grid-pagination.d.ts +11 -0
- package/bundle/wcs-grid-pagination.js +2 -0
- package/bundle/wcs-grid-pagination.js.map +1 -0
- package/bundle/wcs-grid.d.ts +11 -0
- package/bundle/wcs-grid.js +2 -0
- package/bundle/wcs-grid.js.map +1 -0
- package/bundle/wcs-header.d.ts +11 -0
- package/bundle/wcs-header.js +2 -0
- package/bundle/wcs-header.js.map +1 -0
- package/bundle/wcs-hint.d.ts +11 -0
- package/bundle/wcs-hint.js +2 -0
- package/bundle/wcs-hint.js.map +1 -0
- package/bundle/wcs-horizontal-stepper.d.ts +11 -0
- package/bundle/wcs-horizontal-stepper.js +2 -0
- package/bundle/wcs-horizontal-stepper.js.map +1 -0
- package/bundle/wcs-icon.d.ts +11 -0
- package/bundle/wcs-icon.js +2 -0
- package/bundle/wcs-icon.js.map +1 -0
- package/bundle/wcs-input.d.ts +11 -0
- package/bundle/wcs-input.js +2 -0
- package/bundle/wcs-input.js.map +1 -0
- package/bundle/wcs-label.d.ts +11 -0
- package/bundle/wcs-label.js +2 -0
- package/bundle/wcs-label.js.map +1 -0
- package/bundle/wcs-list-item-properties.d.ts +11 -0
- package/bundle/wcs-list-item-properties.js +2 -0
- package/bundle/wcs-list-item-properties.js.map +1 -0
- package/bundle/wcs-list-item-property.d.ts +11 -0
- package/bundle/wcs-list-item-property.js +2 -0
- package/bundle/wcs-list-item-property.js.map +1 -0
- package/bundle/wcs-list-item.d.ts +11 -0
- package/bundle/wcs-list-item.js +2 -0
- package/bundle/wcs-list-item.js.map +1 -0
- package/bundle/wcs-mat-icon.d.ts +11 -0
- package/bundle/wcs-mat-icon.js +2 -0
- package/bundle/wcs-mat-icon.js.map +1 -0
- package/bundle/wcs-modal.d.ts +11 -0
- package/bundle/wcs-modal.js +2 -0
- package/bundle/wcs-modal.js.map +1 -0
- package/bundle/wcs-native-select.d.ts +11 -0
- package/bundle/wcs-native-select.js +2 -0
- package/bundle/wcs-native-select.js.map +1 -0
- package/bundle/wcs-nav-item.d.ts +11 -0
- package/bundle/wcs-nav-item.js +2 -0
- package/bundle/wcs-nav-item.js.map +1 -0
- package/bundle/wcs-nav.d.ts +11 -0
- package/bundle/wcs-nav.js +2 -0
- package/bundle/wcs-nav.js.map +1 -0
- package/bundle/wcs-progress-bar.d.ts +11 -0
- package/bundle/wcs-progress-bar.js +2 -0
- package/bundle/wcs-progress-bar.js.map +1 -0
- package/bundle/wcs-progress-radial.d.ts +11 -0
- package/bundle/wcs-progress-radial.js +2 -0
- package/bundle/wcs-progress-radial.js.map +1 -0
- package/bundle/wcs-radio-group.d.ts +11 -0
- package/bundle/wcs-radio-group.js +2 -0
- package/bundle/wcs-radio-group.js.map +1 -0
- package/bundle/wcs-radio.d.ts +11 -0
- package/bundle/wcs-radio.js +2 -0
- package/bundle/wcs-radio.js.map +1 -0
- package/bundle/wcs-select-option.d.ts +11 -0
- package/bundle/wcs-select-option.js +2 -0
- package/bundle/wcs-select-option.js.map +1 -0
- package/bundle/wcs-select.d.ts +11 -0
- package/bundle/wcs-select.js +2 -0
- package/bundle/wcs-select.js.map +1 -0
- package/bundle/wcs-skeleton-circle.d.ts +11 -0
- package/bundle/wcs-skeleton-circle.js +2 -0
- package/bundle/wcs-skeleton-circle.js.map +1 -0
- package/bundle/wcs-skeleton-rectangle.d.ts +11 -0
- package/bundle/wcs-skeleton-rectangle.js +2 -0
- package/bundle/wcs-skeleton-rectangle.js.map +1 -0
- package/bundle/wcs-skeleton-text.d.ts +11 -0
- package/bundle/wcs-skeleton-text.js +2 -0
- package/bundle/wcs-skeleton-text.js.map +1 -0
- package/bundle/wcs-spinner.d.ts +11 -0
- package/bundle/wcs-spinner.js +2 -0
- package/bundle/wcs-spinner.js.map +1 -0
- package/bundle/wcs-switch.d.ts +11 -0
- package/bundle/wcs-switch.js +2 -0
- package/bundle/wcs-switch.js.map +1 -0
- package/bundle/wcs-tab.d.ts +11 -0
- package/bundle/wcs-tab.js +2 -0
- package/bundle/wcs-tab.js.map +1 -0
- package/bundle/wcs-tabs.d.ts +11 -0
- package/bundle/wcs-tabs.js +2 -0
- package/bundle/wcs-tabs.js.map +1 -0
- package/bundle/wcs-textarea.d.ts +11 -0
- package/bundle/wcs-textarea.js +2 -0
- package/bundle/wcs-textarea.js.map +1 -0
- package/bundle/wcs-tooltip.d.ts +11 -0
- package/bundle/wcs-tooltip.js +7 -0
- package/bundle/wcs-tooltip.js.map +1 -0
- package/composite-elements/index.d.ts +33 -0
- package/composite-elements/index.js +2 -0
- package/composite-elements/index.js.map +1 -0
- package/composite-elements/p-04663560.js +2 -0
- package/composite-elements/p-04663560.js.map +1 -0
- package/composite-elements/p-0c306f8c.js +2 -0
- package/composite-elements/p-0c306f8c.js.map +1 -0
- package/composite-elements/p-2454bcae.js +2 -0
- package/composite-elements/p-2454bcae.js.map +1 -0
- package/composite-elements/p-2bef72c7.js +2 -0
- package/composite-elements/p-2bef72c7.js.map +1 -0
- package/composite-elements/p-35d7af48.js +2 -0
- package/composite-elements/p-35d7af48.js.map +1 -0
- package/composite-elements/p-3abf8a42.js +2 -0
- package/composite-elements/p-3abf8a42.js.map +1 -0
- package/composite-elements/p-46f752d5.js +2 -0
- package/composite-elements/p-46f752d5.js.map +1 -0
- package/composite-elements/p-55668982.js +2 -0
- package/composite-elements/p-55668982.js.map +1 -0
- package/composite-elements/p-5a3d7fec.js +2 -0
- package/composite-elements/p-5a3d7fec.js.map +1 -0
- package/composite-elements/p-6dd2b564.js +156 -0
- package/composite-elements/p-6dd2b564.js.map +1 -0
- package/composite-elements/p-a0f32ead.js +2 -0
- package/composite-elements/p-a0f32ead.js.map +1 -0
- package/composite-elements/p-a14aec19.js +2 -0
- package/composite-elements/p-a14aec19.js.map +1 -0
- package/composite-elements/p-a7468a3a.js +2 -0
- package/composite-elements/p-a7468a3a.js.map +1 -0
- package/composite-elements/p-a90bb01e.js +2 -0
- package/composite-elements/p-a90bb01e.js.map +1 -0
- package/composite-elements/p-af24fb0d.js +16 -0
- package/composite-elements/p-af24fb0d.js.map +1 -0
- package/composite-elements/p-b83afff9.js +2 -0
- package/composite-elements/p-b83afff9.js.map +1 -0
- package/composite-elements/p-b92e818b.js +2 -0
- package/composite-elements/p-b92e818b.js.map +1 -0
- package/composite-elements/p-d3404c52.js +2 -0
- package/composite-elements/p-d3404c52.js.map +1 -0
- package/composite-elements/p-e1fb3625.js +2 -0
- package/composite-elements/p-e1fb3625.js.map +1 -0
- package/composite-elements/p-e803bb26.js +2 -0
- package/composite-elements/p-e803bb26.js.map +1 -0
- package/composite-elements/p-ef26b4d8.js +2 -0
- package/composite-elements/p-ef26b4d8.js.map +1 -0
- package/composite-elements/p-fb2751c2.js +2 -0
- package/composite-elements/p-fb2751c2.js.map +1 -0
- package/composite-elements/p-fe1f9cc5.js +2 -0
- package/composite-elements/p-fe1f9cc5.js.map +1 -0
- package/composite-elements/package.json +12 -0
- package/composite-elements/wcs-accordion-content.d.ts +11 -0
- package/composite-elements/wcs-accordion-content.js +2 -0
- package/composite-elements/wcs-accordion-content.js.map +1 -0
- package/composite-elements/wcs-accordion-header.d.ts +11 -0
- package/composite-elements/wcs-accordion-header.js +2 -0
- package/composite-elements/wcs-accordion-header.js.map +1 -0
- package/composite-elements/wcs-accordion-panel.d.ts +11 -0
- package/composite-elements/wcs-accordion-panel.js +2 -0
- package/composite-elements/wcs-accordion-panel.js.map +1 -0
- package/composite-elements/wcs-accordion.d.ts +11 -0
- package/composite-elements/wcs-accordion.js +2 -0
- package/composite-elements/wcs-accordion.js.map +1 -0
- package/composite-elements/wcs-action-bar.d.ts +11 -0
- package/composite-elements/wcs-action-bar.js +2 -0
- package/composite-elements/wcs-action-bar.js.map +1 -0
- package/composite-elements/wcs-alert-drawer.d.ts +11 -0
- package/composite-elements/wcs-alert-drawer.js +2 -0
- package/composite-elements/wcs-alert-drawer.js.map +1 -0
- package/composite-elements/wcs-alert.d.ts +11 -0
- package/composite-elements/wcs-alert.js +2 -0
- package/composite-elements/wcs-alert.js.map +1 -0
- package/composite-elements/wcs-app.d.ts +11 -0
- package/composite-elements/wcs-app.js +2 -0
- package/composite-elements/wcs-app.js.map +1 -0
- package/composite-elements/wcs-badge.d.ts +11 -0
- package/composite-elements/wcs-badge.js +2 -0
- package/composite-elements/wcs-badge.js.map +1 -0
- package/composite-elements/wcs-breadcrumb-item.d.ts +11 -0
- package/composite-elements/wcs-breadcrumb-item.js +2 -0
- package/composite-elements/wcs-breadcrumb-item.js.map +1 -0
- package/composite-elements/wcs-breadcrumb.d.ts +11 -0
- package/composite-elements/wcs-breadcrumb.js +2 -0
- package/composite-elements/wcs-breadcrumb.js.map +1 -0
- package/composite-elements/wcs-button.d.ts +11 -0
- package/composite-elements/wcs-button.js +2 -0
- package/composite-elements/wcs-button.js.map +1 -0
- package/composite-elements/wcs-card-body.d.ts +11 -0
- package/composite-elements/wcs-card-body.js +2 -0
- package/composite-elements/wcs-card-body.js.map +1 -0
- package/composite-elements/wcs-card-content.d.ts +11 -0
- package/composite-elements/wcs-card-content.js +2 -0
- package/composite-elements/wcs-card-content.js.map +1 -0
- package/composite-elements/wcs-card-footer.d.ts +11 -0
- package/composite-elements/wcs-card-footer.js +2 -0
- package/composite-elements/wcs-card-footer.js.map +1 -0
- package/composite-elements/wcs-card-header.d.ts +11 -0
- package/composite-elements/wcs-card-header.js +2 -0
- package/composite-elements/wcs-card-header.js.map +1 -0
- package/composite-elements/wcs-card-media.d.ts +11 -0
- package/composite-elements/wcs-card-media.js +2 -0
- package/composite-elements/wcs-card-media.js.map +1 -0
- package/composite-elements/wcs-card.d.ts +11 -0
- package/composite-elements/wcs-card.js +2 -0
- package/composite-elements/wcs-card.js.map +1 -0
- package/composite-elements/wcs-checkbox.d.ts +11 -0
- package/composite-elements/wcs-checkbox.js +2 -0
- package/composite-elements/wcs-checkbox.js.map +1 -0
- package/composite-elements/wcs-chip.d.ts +11 -0
- package/composite-elements/wcs-chip.js +2 -0
- package/composite-elements/wcs-chip.js.map +1 -0
- package/composite-elements/wcs-com-nav-category.d.ts +11 -0
- package/composite-elements/wcs-com-nav-category.js +2 -0
- package/composite-elements/wcs-com-nav-category.js.map +1 -0
- package/composite-elements/wcs-com-nav-item.d.ts +11 -0
- package/composite-elements/wcs-com-nav-item.js +2 -0
- package/composite-elements/wcs-com-nav-item.js.map +1 -0
- package/composite-elements/wcs-com-nav-submenu.d.ts +11 -0
- package/composite-elements/wcs-com-nav-submenu.js +2 -0
- package/composite-elements/wcs-com-nav-submenu.js.map +1 -0
- package/composite-elements/wcs-com-nav.d.ts +11 -0
- package/composite-elements/wcs-com-nav.js +2 -0
- package/composite-elements/wcs-com-nav.js.map +1 -0
- package/composite-elements/wcs-counter.d.ts +11 -0
- package/composite-elements/wcs-counter.js +2 -0
- package/composite-elements/wcs-counter.js.map +1 -0
- package/composite-elements/wcs-divider.d.ts +11 -0
- package/composite-elements/wcs-divider.js +2 -0
- package/composite-elements/wcs-divider.js.map +1 -0
- package/composite-elements/wcs-dropdown-divider.d.ts +11 -0
- package/composite-elements/wcs-dropdown-divider.js +2 -0
- package/composite-elements/wcs-dropdown-divider.js.map +1 -0
- package/composite-elements/wcs-dropdown-header.d.ts +11 -0
- package/composite-elements/wcs-dropdown-header.js +2 -0
- package/composite-elements/wcs-dropdown-header.js.map +1 -0
- package/composite-elements/wcs-dropdown-item.d.ts +11 -0
- package/composite-elements/wcs-dropdown-item.js +2 -0
- package/composite-elements/wcs-dropdown-item.js.map +1 -0
- package/composite-elements/wcs-dropdown.d.ts +11 -0
- package/composite-elements/wcs-dropdown.js +2 -0
- package/composite-elements/wcs-dropdown.js.map +1 -0
- package/composite-elements/wcs-editable-field.d.ts +11 -0
- package/composite-elements/wcs-editable-field.js +2 -0
- package/composite-elements/wcs-editable-field.js.map +1 -0
- package/composite-elements/wcs-error.d.ts +11 -0
- package/composite-elements/wcs-error.js +2 -0
- package/composite-elements/wcs-error.js.map +1 -0
- package/composite-elements/wcs-field-content.d.ts +11 -0
- package/composite-elements/wcs-field-content.js +2 -0
- package/composite-elements/wcs-field-content.js.map +1 -0
- package/composite-elements/wcs-field-label.d.ts +11 -0
- package/composite-elements/wcs-field-label.js +2 -0
- package/composite-elements/wcs-field-label.js.map +1 -0
- package/composite-elements/wcs-field.d.ts +11 -0
- package/composite-elements/wcs-field.js +2 -0
- package/composite-elements/wcs-field.js.map +1 -0
- package/composite-elements/wcs-footer.d.ts +11 -0
- package/composite-elements/wcs-footer.js +2 -0
- package/composite-elements/wcs-footer.js.map +1 -0
- package/composite-elements/wcs-form-field.d.ts +11 -0
- package/composite-elements/wcs-form-field.js +2 -0
- package/composite-elements/wcs-form-field.js.map +1 -0
- package/composite-elements/wcs-galactic-menu.d.ts +11 -0
- package/composite-elements/wcs-galactic-menu.js +2 -0
- package/composite-elements/wcs-galactic-menu.js.map +1 -0
- package/composite-elements/wcs-galactic.d.ts +11 -0
- package/composite-elements/wcs-galactic.js +2 -0
- package/composite-elements/wcs-galactic.js.map +1 -0
- package/composite-elements/wcs-grid-column.d.ts +11 -0
- package/composite-elements/wcs-grid-column.js +2 -0
- package/composite-elements/wcs-grid-column.js.map +1 -0
- package/composite-elements/wcs-grid-custom-cell.d.ts +11 -0
- package/composite-elements/wcs-grid-custom-cell.js +2 -0
- package/composite-elements/wcs-grid-custom-cell.js.map +1 -0
- package/composite-elements/wcs-grid-pagination.d.ts +11 -0
- package/composite-elements/wcs-grid-pagination.js +2 -0
- package/composite-elements/wcs-grid-pagination.js.map +1 -0
- package/composite-elements/wcs-grid.d.ts +11 -0
- package/composite-elements/wcs-grid.js +2 -0
- package/composite-elements/wcs-grid.js.map +1 -0
- package/composite-elements/wcs-header.d.ts +11 -0
- package/composite-elements/wcs-header.js +2 -0
- package/composite-elements/wcs-header.js.map +1 -0
- package/composite-elements/wcs-hint.d.ts +11 -0
- package/composite-elements/wcs-hint.js +2 -0
- package/composite-elements/wcs-hint.js.map +1 -0
- package/composite-elements/wcs-horizontal-stepper.d.ts +11 -0
- package/composite-elements/wcs-horizontal-stepper.js +2 -0
- package/composite-elements/wcs-horizontal-stepper.js.map +1 -0
- package/composite-elements/wcs-icon.d.ts +11 -0
- package/composite-elements/wcs-icon.js +2 -0
- package/composite-elements/wcs-icon.js.map +1 -0
- package/composite-elements/wcs-input.d.ts +11 -0
- package/composite-elements/wcs-input.js +2 -0
- package/composite-elements/wcs-input.js.map +1 -0
- package/composite-elements/wcs-label.d.ts +11 -0
- package/composite-elements/wcs-label.js +2 -0
- package/composite-elements/wcs-label.js.map +1 -0
- package/composite-elements/wcs-list-item-properties.d.ts +11 -0
- package/composite-elements/wcs-list-item-properties.js +2 -0
- package/composite-elements/wcs-list-item-properties.js.map +1 -0
- package/composite-elements/wcs-list-item-property.d.ts +11 -0
- package/composite-elements/wcs-list-item-property.js +2 -0
- package/composite-elements/wcs-list-item-property.js.map +1 -0
- package/composite-elements/wcs-list-item.d.ts +11 -0
- package/composite-elements/wcs-list-item.js +2 -0
- package/composite-elements/wcs-list-item.js.map +1 -0
- package/composite-elements/wcs-mat-icon.d.ts +11 -0
- package/composite-elements/wcs-mat-icon.js +2 -0
- package/composite-elements/wcs-mat-icon.js.map +1 -0
- package/composite-elements/wcs-modal.d.ts +11 -0
- package/composite-elements/wcs-modal.js +2 -0
- package/composite-elements/wcs-modal.js.map +1 -0
- package/composite-elements/wcs-native-select.d.ts +11 -0
- package/composite-elements/wcs-native-select.js +2 -0
- package/composite-elements/wcs-native-select.js.map +1 -0
- package/composite-elements/wcs-nav-item.d.ts +11 -0
- package/composite-elements/wcs-nav-item.js +2 -0
- package/composite-elements/wcs-nav-item.js.map +1 -0
- package/composite-elements/wcs-nav.d.ts +11 -0
- package/composite-elements/wcs-nav.js +2 -0
- package/composite-elements/wcs-nav.js.map +1 -0
- package/composite-elements/wcs-progress-bar.d.ts +11 -0
- package/composite-elements/wcs-progress-bar.js +2 -0
- package/composite-elements/wcs-progress-bar.js.map +1 -0
- package/composite-elements/wcs-progress-radial.d.ts +11 -0
- package/composite-elements/wcs-progress-radial.js +2 -0
- package/composite-elements/wcs-progress-radial.js.map +1 -0
- package/composite-elements/wcs-radio-group.d.ts +11 -0
- package/composite-elements/wcs-radio-group.js +2 -0
- package/composite-elements/wcs-radio-group.js.map +1 -0
- package/composite-elements/wcs-radio.d.ts +11 -0
- package/composite-elements/wcs-radio.js +2 -0
- package/composite-elements/wcs-radio.js.map +1 -0
- package/composite-elements/wcs-select-option.d.ts +11 -0
- package/composite-elements/wcs-select-option.js +2 -0
- package/composite-elements/wcs-select-option.js.map +1 -0
- package/composite-elements/wcs-select.d.ts +11 -0
- package/composite-elements/wcs-select.js +2 -0
- package/composite-elements/wcs-select.js.map +1 -0
- package/composite-elements/wcs-skeleton-circle.d.ts +11 -0
- package/composite-elements/wcs-skeleton-circle.js +2 -0
- package/composite-elements/wcs-skeleton-circle.js.map +1 -0
- package/composite-elements/wcs-skeleton-rectangle.d.ts +11 -0
- package/composite-elements/wcs-skeleton-rectangle.js +2 -0
- package/composite-elements/wcs-skeleton-rectangle.js.map +1 -0
- package/composite-elements/wcs-skeleton-text.d.ts +11 -0
- package/composite-elements/wcs-skeleton-text.js +2 -0
- package/composite-elements/wcs-skeleton-text.js.map +1 -0
- package/composite-elements/wcs-spinner.d.ts +11 -0
- package/composite-elements/wcs-spinner.js +2 -0
- package/composite-elements/wcs-spinner.js.map +1 -0
- package/composite-elements/wcs-switch.d.ts +11 -0
- package/composite-elements/wcs-switch.js +2 -0
- package/composite-elements/wcs-switch.js.map +1 -0
- package/composite-elements/wcs-tab.d.ts +11 -0
- package/composite-elements/wcs-tab.js +2 -0
- package/composite-elements/wcs-tab.js.map +1 -0
- package/composite-elements/wcs-tabs.d.ts +11 -0
- package/composite-elements/wcs-tabs.js +2 -0
- package/composite-elements/wcs-tabs.js.map +1 -0
- package/composite-elements/wcs-textarea.d.ts +11 -0
- package/composite-elements/wcs-textarea.js +2 -0
- package/composite-elements/wcs-textarea.js.map +1 -0
- package/composite-elements/wcs-tooltip.d.ts +11 -0
- package/composite-elements/wcs-tooltip.js +7 -0
- package/composite-elements/wcs-tooltip.js.map +1 -0
- package/dist/cjs/wcs-accordion-panel.cjs.entry.js +2 -1
- package/dist/cjs/wcs-accordion-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-accordion.cjs.entry.js +5 -1
- package/dist/cjs/wcs-accordion.cjs.entry.js.map +1 -1
- package/dist/collection/components/accordion/accordion.e2e.playwright.js +62 -0
- package/dist/collection/components/accordion/accordion.e2e.playwright.js.map +1 -1
- package/dist/collection/components/accordion/accordion.js +5 -1
- package/dist/collection/components/accordion/accordion.js.map +1 -1
- package/dist/collection/components/accordion-panel/accordion-panel.js +2 -1
- package/dist/collection/components/accordion-panel/accordion-panel.js.map +1 -1
- package/dist/esm/wcs-accordion-panel.entry.js +2 -1
- package/dist/esm/wcs-accordion-panel.entry.js.map +1 -1
- package/dist/esm/wcs-accordion.entry.js +5 -1
- package/dist/esm/wcs-accordion.entry.js.map +1 -1
- package/dist/types/components/accordion/accordion.d.ts +1 -0
- package/dist/wcs/{p-f2eeb249.entry.js → p-2329af04.entry.js} +2 -2
- package/dist/wcs/{p-f2eeb249.entry.js.map → p-2329af04.entry.js.map} +1 -1
- package/dist/wcs/p-5d598d35.entry.js +2 -0
- package/dist/wcs/p-5d598d35.entry.js.map +1 -0
- package/dist/wcs/wcs.esm.js +1 -1
- package/package.json +1 -1
- package/dist/wcs/p-828b45b4.entry.js +0 -2
- package/dist/wcs/p-828b45b4.entry.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["freeGlobal","global","Object","freeGlobal$1","freeSelf","self","root","Function","root$1","Symbol","Symbol$2","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","isArray","Array","isArray$2","isObject","type","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","coreJsData$1","maskSrcKey","uid","exec","keys","IE_PROTO","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","RegExp","replace","baseIsNative","pattern","test","getValue","object","key","getNative","WeakMap","WeakMap$1","MAX_SAFE_INTEGER","reIsUint","isIndex","length","eq","other","isLength","isArrayLike","isPrototype","Ctor","constructor","proto","baseTimes","n","iteratee","index","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","arguments","isArguments$1","stubFalse","freeExports","exports","nodeType","freeModule","module","moduleExports","Buffer","nativeIsBuffer","isBuffer","isBuffer$1","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","process","nodeUtil","types","require","binding","nodeUtil$1","nodeIsTypedArray","isTypedArray","isTypedArray$1","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","push","overArg","transform","arg","nativeKeys","nativeKeys$1","baseKeys","nativeCreate","nativeCreate$1","hashClear","this","__data__","size","hashDelete","has","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","Hash","entries","clear","entry","set","get","listCacheClear","assocIndexOf","array","arrayProto","splice","listCacheDelete","lastIndex","pop","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","Map$2","mapCacheClear","hash","map","string","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","arrayPush","values","offset","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","arrayFilter","predicate","resIndex","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","getSymbols$1","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","DataView","DataView$1","Promise","Promise$2","Set","Set$2","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","getTag$1","Uint8Array","Uint8Array$1","setCacheAdd","setCacheHas","SetCache","add","arraySome","cacheHas","cache","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","forEach","setToArray","symbolTag","symbolProto","symbolValueOf","valueOf","equalByTag","byteLength","byteOffset","buffer","name","message","convert","stacked","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","isEqual","__assign","assign","t","s","i","p","apply","__rest","indexOf","__values","o","iterator","m","next","done","TypeError","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","ActionTypes","SpecialTargets","start","Start","stop","Stop","raise","Raise","send","Send","cancel","Cancel","nullEvent","NullEvent","Assign","log","Log","init","Init","invoke","Invoke","errorPlatform","ErrorPlatform","ErrorCustom","update","Update","choose","Choose","pure","Pure","STATE_DELIMITER","EMPTY_ACTIVITY_MAP","DEFAULT_GUARD_TYPE","TARGETLESS_KEY","IS_PRODUCTION","_a","matchesState","parentStateId","childStateId","delimiter","parentStateValue","toStateValue","childStateValue","isString","every","getEventType","event","Error","toStatePath","stateId","split","isStateLike","state","stateValue","pathToStateValue","statePath","marker","mapValues","collection","collectionKeys","mapFilterValues","e_1","_b","_c","item","e_1_1","return","path","props","e_2","props_1","props_1_1","prop","e_2_1","nestedPath","accessorProp","e_3","props_2","props_2_1","e_3_1","toStatePaths","flatten","subStateValue","subPath","toArrayStrict","toArray","mapContext","mapper","context","_event","e_5","subMapper","e_5_1","isBuiltInEvent","eventType","isPromiseLike","then","isBehavior","transition","partition","items","e_6","truthy","falsy","items_1","items_1_1","e_6_1","updateHistoryStates","hist","states","subHist","current","updateHistoryValue","updateContext","assignActions","updatedContext","reduce","acc","assignAction","e_7","assignment","meta","action","partialUpdate","propAssignment","e_7_1","warn","toGuard","condition","guardMap","isObservable","subscribe","symbolObservable","observable","isMachine","isActor","toEventObject","payload","toSCXMLEvent","scxmlEvent","$$type","eventObject","toTransitionConfigArray","configLike","transitions","transitionLike","target","normalizeTarget","evaluateGuard","machine","guard","guards","options","guardMeta","cond","condFn","id","toInvokeSource","src","toObserver","nextHandler","errorHandler","completionHandler","noop","isObserver","bind","complete","createInvokeId","stateNodeId","isRaisableAction","Internal","delay","initEvent","getActionFunction","actionType","actionFunctionMap","toActionObject","actionObject","toActionObjects","actions","subAction","toActivityDefinition","raise$1","resolveRaise","ctx","delaysMap","resolvedEvent","resolvedDelay","configDelay","send$1","resolveSend","resolvedTarget","resolveLog","expr","sendId","cancel$1","activity","activityDef","actorRef","resolveStop","actorRefOrString","resolvedActorRef","after","delayRef","idSuffix","After","DoneState","doneInvoke","DoneInvoke","pluckAssigns","actionBlocks","actionBlocks_1","actionBlocks_1_1","block","assign$1","resolveActions","currentState","currentContext","predictableExec","preserveActionOrder","preservedContexts","deferredToBlockEnd","handleAction","blockType","raisedAction","delays","sendAction","log$1","resolved","choose$1","chooseAction","matchedActions","conds","find","resolvedActionsFromChoose","resolvedContextFromChoose","pure$1","resolvedActionsFromPure","resolvedContext","stop$1","resolvedActionObject","exec_1","contextIndex_1","wrapped","_ctx","args","_i","processBlock","resolvedActions","provide","service","fn","createNullActor","unsubscribe","getSnapshot","toJSON","createInvocableActor","invokeDefinition","invokeSrc","serviceCreator","services","resolvedData","tempActor","createDeferredActor","entity","deferred","initialState_1","withContext","initialState","isSpawnedActor","toActorRef","actorRefLike","isLeafNode","stateNode","getAllChildren","getChildren","filter","sn","getAllStateNodes","stateNodes","getConfiguration","prevStateNodes","e_4","_d","prevConfiguration","prevAdjList","getAdjList","configuration","configuration_1","configuration_1_1","parent","adjList","configuration_2","configuration_2_1","initialStateNodes","_e","_f","child","configuration_3","configuration_3_1","e_4_1","getValueFromAdj","baseNode","childStateNodes","childStateNode","csn","configuration_4","configuration_4_1","rootNode","config","iterable","some","member","nextEvents","ownEvents","isInFinalState","getMeta","getTagsFromConfiguration","tags","stateValuesEqual","a","b","aKeys","bKeys","isStateConfig","bindActionToState","boundAction","State","_this","activities","events","_sessionid","historyValue","history","matches","toStrings","children","defineProperty","create","inert","valueKeys","jsonValues","hasTag","can","transitionData","getTransitionData","defaultOptions","deferEvents","Scheduler","processingEvent","queue","initialized","initialize","callback","schedule","flushEvents","task","nextCallback","shift","sessionIdIndex","registry","bookId","register","actor","free","delete","getGlobal","globalThis","window","getDevTools","__xstate__","registerService","devTools","spawnBehavior","behavior","observers","mailbox","flushing","flush","event_1","actorCtx","observer","handleError","DEFAULT_SPAWN_OPTIONS","sync","autoForward","InterpreterStatus","Interpreter","delayedEventsMap","listeners","contextListeners","stopListeners","doneListeners","eventListeners","sendListeners","status","NotStarted","forwardTo","_outgoingQueue","batch","Stopped","Running","JSON","stringify","scheduler","forward","nextState","_nextState","_state","sendTo","immediate","isParent","Parent","error$1","origin","sessionId","predictableActionArguments","_exec","actionOrExec","err","sendAction_1","defer","invokeSource","source","spawn","spawnActivity","stopChild","label","logger","resolvedOptions","clock","resolvedId","_initialState","enumerable","configurable","execute","actionsConfig","listener","_g","_h","_j","_k","contextListener","finalChildStateNode","doneData","_doneEvent","_l","_m","_stop","_stopChildren","onTransition","nextListenerOrObserver","_","completeListener","completeOnce","onDone","onStop","onEvent","onSend","onChange","off","_init","resolvedState","resolveState","attachDev","e_8","e_9","e_10","e_8_1","_o","e_9_1","_p","_q","clearTimeout","e_10_1","exitActions","sort","order","onExit","newState","changed","e_11","batchChanged","batchedActions","_loop_1","events_1","events_1_1","e_11_1","sender","nextEvent","e_12","e_12_1","timerId","setTimeout","removeChild","childId","spawnPromise","spawnCallback","spawnActor","spawnObservable","spawnMachine","childService","doneEvent","promise","canceled","response","errorData","errorEvent","strict","unsubscribed","receivers","emitted","receive","callbackStop","newListener","receiver","subscription","implementation","dispose","spawnEffect","__REDUX_DEVTOOLS_EXTENSION__","devToolsOptions","connect","autoPause","stateSanitizer","features","jump","skip","ms","console","interpret","interpreter","simpleSrc","toInvokeDefinition","invokeConfig","invokeDef","NULL_EVENT","STATE_IDENTIFIER","WILDCARD","EMPTY_OBJECT","isStateId","str","createDefaultOptions","validateArrayifiedTransitions","StateNode","_context","_stateInfo","__xstatenode","__cache","relativeValue","initialStateValue","on","candidates","delayedTransitions","idMap","join","version","parallel","schema","description","initial","stateConfig","dfs","_transient","always","onEntry","exit","invokeId","withConfig","definition","getDelayedTransitions","formatTransitions","getCandidates","eventName","transient","sameEventType","afterConfig","mutateEntryExit","configTransition","resolvedTransition","isNaN","delayedTransition","formatTransition","getStateNodes","getStateNode","subStateKeys","subStateNodes","subStateKey","handles","includes","stateFromConfig","transitionLeafNode","transitionCompoundNode","_transition","transitionParallelNode","transitionMap","subStateNode","stateTransitions","enabledTransitions","st","willTransition","exitSet","nextStateNodes","selectedTransition","candidate","stateIn","in","isInState","getStateNodeById","guardPassed","allNextStateNodes","getRelativeStateNodes","isInternal","internal","targetNode","getPotentiallyReenteringNodes","nodes","possibleAncestor","getActions","resolvedConfig","isDone","prevState","prevConfig","entrySet","prevConfig_1","prevConfig_1_1","entryStates","exitStates","doneEvents","grandparent","parentNode","entryActions","invokeActions","stopActions","resolvedStateValue","getResolvedPath","stateTransition","resolveTransition","resolveRaisedTransition","originalEvent","currentActions","unshift","resolvedConfiguration","start$1","raisedEvents","nonRaisedActions","didUpdateContext","hasAlwaysTransitions","maybeNextState","raisedEvent","stateKey","resolvedStateId","getStateNodeByPath","arrayStatePath","currentStateNode","stateIdentifier","getInitialState","historyConfig","relativeStateId","resolveHistory","initialStateNodePaths","initialPath","getFromRelativePath","relativePath","childStatePath","relativeStateValue","historyTarget","relativeChildPath","subHistoryValue","subStatePath","childStateIds","stateIds","resolveTarget","_target","isInternalTarget","targetStateNode","transitionConfig","normalizedTarget","onConfig","wildcardConfigs","strictTransitionConfigs_1","transitionConfigArray","eventlessConfig","doneConfig","settleTransitions","onError","formattedTransitions","delayedTransitions_1","delayedTransitions_1_1","Machine","initialContext","WcsDefaultSelectFilterFn","optionEl","textContent","toLowerCase","startsWith","WcsSelectSizeValue","isWcsSelectSize","SelectChips","disabled","option","onRemove","style","chipColor","chipBackgroundColor","h","class","onClick","stopImmediatePropagation","displayText","xmlns","width","height","viewBox","d","fill","getActionForKeyboardEvent","keyboardShortcut","keyboardShortcutFromKeyboardEvent","kind","shouldBlur","selectCss","WcsSelectStyle0","SELECT_MACHINE_CONFIG","closed","CLICK","OPEN","OPTION_SELECTED","opened","CLOSE","SELECT_INHERITED_ATTRS","Select","proxyCustomElement","H","inheritedAttributes","selectId","selectIds","optionsId","generateUniqueId","optionValue","selectedValue","open","stateService","close","onValueChangeHandler","newValue","updateSelectedValue","resetIfNoValue","shouldEmitFilterChangeEvent","reset","multiple","lastModifiedOptionElement","opt","compareWith","serverMode","compareResult","compareLists","v","added","addedOption","innerText","selected","kept","keptOption","removed","removedOption","removedOptionElement","isSelected","findIndex","hasFoundCurrentValueInOptionList","autocomplete","setAutocompleteValue","componentDidLoad","optionsEl","el","shadowRoot","querySelector","controlEl","stateMachine","initMachineOptions","replaceOptions_firefoxBefore63","listenDomUpdate_firefoxBefore63","popper","createPopperInstance","labelElement","findItemLabel","createPopper","placement","modifiers","emitChange","wcsChange","emit","querySelectorAll","appendChild","MutationObserver","mutationsList","mutation","observe","childList","componentWillRender","componentWillLoad","inheritAriaAttributes","inheritAttributes","setAriaAttribute","attr","setOrRemoveAttribute","autocompleteInput","opts","notDisabledOptions","expanded","focused","hasValue","autocompleteValue","clearHighlightOnLastHighlightedOption","lastFocusedOptionElement","requestAnimationFrame","focus","fromKeyboard","focusAutocompleteInput","selectOption","handleOptionSelectedOnMultiple","handleOptionSelectedOnSingle","enabled","disconnectedCallback","onMouseUp","clickOnScroll","isElement","offsetX","clientWidth","offsetY","clientHeight","clickOnRemoveChip","composedPath","x","nodeName","classList","contains","onWindowClickEvent","firstSelectInEventPath","clickOnCurrentSelect","onKeyDown","actionsFromKeyboardEvents","preventDefault","actionFromKeyboardEvent","doActionFromKeyboardEventAssociatedAction","selectClosestOption","selectFirstOption","selectLastOption","indexToSelect","lastHighlightedOptionElement","highlightClosestOption","highlightFirstOption","highlightLastOption","focusClosestOption","focusFirstOption","focusLastOption","focusOption","elementToFocus","previousElementSibling","parentElement","isFocusable","getClosestActiveOptionIndexForState","direction","concernedOption","currentIndex","MIN_INDEX","MAX_INDEX","optionToSelect","sendOptionSelectedToStateMachine","indexToFocus","setAttribute","selectedOptionChanged","detail","onSlotchange","syncOptionsElementsStateWithCurrentSelectedValue","showNoResultFoundLabel","removeChip","highlightOption","indexToHighlight","highlighted","scrollIntoView","inline","onAutocompleteInputEvent","stopPropagation","isReset","fromUserInteraction","newValueIsDifferentFromLastModifiedOption","matchingOptions","optionsToHide","filteringFunction","filterFn","hidden","removeAttribute","newAutocompleteValue","valueHasChanged","wcsFilterChange","onFocus","wcsFocus","onBlur","relatedTarget","wcsBlur","componentDidRender","focusedAttributes","tabIndex","render","ariaLabelValue","trimEnd","noResultContainerId","Host","overlayDirection","role","required","chips","placeholder","onInput","ref","SelectArrow","up"],"sources":["node_modules/lodash-es/_freeGlobal.js","node_modules/lodash-es/_root.js","node_modules/lodash-es/_Symbol.js","node_modules/lodash-es/_getRawTag.js","node_modules/lodash-es/_objectToString.js","node_modules/lodash-es/_baseGetTag.js","node_modules/lodash-es/isObjectLike.js","node_modules/lodash-es/isArray.js","node_modules/lodash-es/isObject.js","node_modules/lodash-es/isFunction.js","node_modules/lodash-es/_coreJsData.js","node_modules/lodash-es/_isMasked.js","node_modules/lodash-es/_toSource.js","node_modules/lodash-es/_baseIsNative.js","node_modules/lodash-es/_getValue.js","node_modules/lodash-es/_getNative.js","node_modules/lodash-es/_WeakMap.js","node_modules/lodash-es/_isIndex.js","node_modules/lodash-es/eq.js","node_modules/lodash-es/isLength.js","node_modules/lodash-es/isArrayLike.js","node_modules/lodash-es/_isPrototype.js","node_modules/lodash-es/_baseTimes.js","node_modules/lodash-es/_baseIsArguments.js","node_modules/lodash-es/isArguments.js","node_modules/lodash-es/stubFalse.js","node_modules/lodash-es/isBuffer.js","node_modules/lodash-es/_baseIsTypedArray.js","node_modules/lodash-es/_baseUnary.js","node_modules/lodash-es/_nodeUtil.js","node_modules/lodash-es/isTypedArray.js","node_modules/lodash-es/_arrayLikeKeys.js","node_modules/lodash-es/_overArg.js","node_modules/lodash-es/_nativeKeys.js","node_modules/lodash-es/_baseKeys.js","node_modules/lodash-es/keys.js","node_modules/lodash-es/_nativeCreate.js","node_modules/lodash-es/_hashClear.js","node_modules/lodash-es/_hashDelete.js","node_modules/lodash-es/_hashGet.js","node_modules/lodash-es/_hashHas.js","node_modules/lodash-es/_hashSet.js","node_modules/lodash-es/_Hash.js","node_modules/lodash-es/_listCacheClear.js","node_modules/lodash-es/_assocIndexOf.js","node_modules/lodash-es/_listCacheDelete.js","node_modules/lodash-es/_listCacheGet.js","node_modules/lodash-es/_listCacheHas.js","node_modules/lodash-es/_listCacheSet.js","node_modules/lodash-es/_ListCache.js","node_modules/lodash-es/_Map.js","node_modules/lodash-es/_mapCacheClear.js","node_modules/lodash-es/_isKeyable.js","node_modules/lodash-es/_getMapData.js","node_modules/lodash-es/_mapCacheDelete.js","node_modules/lodash-es/_mapCacheGet.js","node_modules/lodash-es/_mapCacheHas.js","node_modules/lodash-es/_mapCacheSet.js","node_modules/lodash-es/_MapCache.js","node_modules/lodash-es/_arrayPush.js","node_modules/lodash-es/_stackClear.js","node_modules/lodash-es/_stackDelete.js","node_modules/lodash-es/_stackGet.js","node_modules/lodash-es/_stackHas.js","node_modules/lodash-es/_stackSet.js","node_modules/lodash-es/_Stack.js","node_modules/lodash-es/_arrayFilter.js","node_modules/lodash-es/stubArray.js","node_modules/lodash-es/_getSymbols.js","node_modules/lodash-es/_baseGetAllKeys.js","node_modules/lodash-es/_getAllKeys.js","node_modules/lodash-es/_DataView.js","node_modules/lodash-es/_Promise.js","node_modules/lodash-es/_Set.js","node_modules/lodash-es/_getTag.js","node_modules/lodash-es/_Uint8Array.js","node_modules/lodash-es/_setCacheAdd.js","node_modules/lodash-es/_setCacheHas.js","node_modules/lodash-es/_SetCache.js","node_modules/lodash-es/_arraySome.js","node_modules/lodash-es/_cacheHas.js","node_modules/lodash-es/_equalArrays.js","node_modules/lodash-es/_mapToArray.js","node_modules/lodash-es/_setToArray.js","node_modules/lodash-es/_equalByTag.js","node_modules/lodash-es/_equalObjects.js","node_modules/lodash-es/_baseIsEqualDeep.js","node_modules/lodash-es/_baseIsEqual.js","node_modules/lodash-es/isEqual.js","node_modules/xstate/es/_virtual/_tslib.js","node_modules/xstate/es/types.js","node_modules/xstate/es/actionTypes.js","node_modules/xstate/es/constants.js","node_modules/xstate/es/environment.js","node_modules/xstate/es/utils.js","node_modules/xstate/es/actions.js","node_modules/xstate/es/serviceScope.js","node_modules/xstate/es/Actor.js","node_modules/xstate/es/stateUtils.js","node_modules/xstate/es/State.js","node_modules/xstate/es/scheduler.js","node_modules/xstate/es/registry.js","node_modules/xstate/es/devTools.js","node_modules/xstate/es/behaviors.js","node_modules/xstate/es/interpreter.js","node_modules/xstate/es/invokeUtils.js","node_modules/xstate/es/StateNode.js","node_modules/xstate/es/Machine.js","src/components/select/select-interface.ts","src/components/select/select-chips.tsx","src/components/select/select-keyboard-event.ts","src/components/select/select.scss?tag=wcs-select&encapsulation=shadow","src/components/select/select.tsx"],"sourcesContent":["/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexport { __assign, __read, __rest, __spreadArray, __values };\n","var ActionTypes;\n\n(function (ActionTypes) {\n ActionTypes[\"Start\"] = \"xstate.start\";\n ActionTypes[\"Stop\"] = \"xstate.stop\";\n ActionTypes[\"Raise\"] = \"xstate.raise\";\n ActionTypes[\"Send\"] = \"xstate.send\";\n ActionTypes[\"Cancel\"] = \"xstate.cancel\";\n ActionTypes[\"NullEvent\"] = \"\";\n ActionTypes[\"Assign\"] = \"xstate.assign\";\n ActionTypes[\"After\"] = \"xstate.after\";\n ActionTypes[\"DoneState\"] = \"done.state\";\n ActionTypes[\"DoneInvoke\"] = \"done.invoke\";\n ActionTypes[\"Log\"] = \"xstate.log\";\n ActionTypes[\"Init\"] = \"xstate.init\";\n ActionTypes[\"Invoke\"] = \"xstate.invoke\";\n ActionTypes[\"ErrorExecution\"] = \"error.execution\";\n ActionTypes[\"ErrorCommunication\"] = \"error.communication\";\n ActionTypes[\"ErrorPlatform\"] = \"error.platform\";\n ActionTypes[\"ErrorCustom\"] = \"xstate.error\";\n ActionTypes[\"Update\"] = \"xstate.update\";\n ActionTypes[\"Pure\"] = \"xstate.pure\";\n ActionTypes[\"Choose\"] = \"xstate.choose\";\n})(ActionTypes || (ActionTypes = {}));\n\nvar SpecialTargets;\n\n(function (SpecialTargets) {\n SpecialTargets[\"Parent\"] = \"#_parent\";\n SpecialTargets[\"Internal\"] = \"#_internal\";\n})(SpecialTargets || (SpecialTargets = {}));\n\nexport { ActionTypes, SpecialTargets };\n","import { ActionTypes } from './types.js';\n\nvar start = ActionTypes.Start;\nvar stop = ActionTypes.Stop;\nvar raise = ActionTypes.Raise;\nvar send = ActionTypes.Send;\nvar cancel = ActionTypes.Cancel;\nvar nullEvent = ActionTypes.NullEvent;\nvar assign = ActionTypes.Assign;\nvar after = ActionTypes.After;\nvar doneState = ActionTypes.DoneState;\nvar log = ActionTypes.Log;\nvar init = ActionTypes.Init;\nvar invoke = ActionTypes.Invoke;\nvar errorExecution = ActionTypes.ErrorExecution;\nvar errorPlatform = ActionTypes.ErrorPlatform;\nvar error = ActionTypes.ErrorCustom;\nvar update = ActionTypes.Update;\nvar choose = ActionTypes.Choose;\nvar pure = ActionTypes.Pure;\n\nexport { after, assign, cancel, choose, doneState, error, errorExecution, errorPlatform, init, invoke, log, nullEvent, pure, raise, send, start, stop, update };\n","var STATE_DELIMITER = '.';\nvar EMPTY_ACTIVITY_MAP = {};\nvar DEFAULT_GUARD_TYPE = 'xstate.guard';\nvar TARGETLESS_KEY = '';\n\nexport { DEFAULT_GUARD_TYPE, EMPTY_ACTIVITY_MAP, STATE_DELIMITER, TARGETLESS_KEY };\n","var IS_PRODUCTION = process.env.NODE_ENV === 'production';\n\nexport { IS_PRODUCTION };\n","import { __values, __spreadArray, __read, __assign } from './_virtual/_tslib.js';\nimport { SpecialTargets } from './types.js';\nimport { raise, send } from './actionTypes.js';\nimport { DEFAULT_GUARD_TYPE, TARGETLESS_KEY, STATE_DELIMITER } from './constants.js';\nimport { IS_PRODUCTION } from './environment.js';\n\nvar _a;\nfunction keys(value) {\n return Object.keys(value);\n}\nfunction matchesState(parentStateId, childStateId, delimiter) {\n if (delimiter === void 0) {\n delimiter = STATE_DELIMITER;\n }\n\n var parentStateValue = toStateValue(parentStateId, delimiter);\n var childStateValue = toStateValue(childStateId, delimiter);\n\n if (isString(childStateValue)) {\n if (isString(parentStateValue)) {\n return childStateValue === parentStateValue;\n } // Parent more specific than child\n\n\n return false;\n }\n\n if (isString(parentStateValue)) {\n return parentStateValue in childStateValue;\n }\n\n return Object.keys(parentStateValue).every(function (key) {\n if (!(key in childStateValue)) {\n return false;\n }\n\n return matchesState(parentStateValue[key], childStateValue[key]);\n });\n}\nfunction getEventType(event) {\n try {\n return isString(event) || typeof event === 'number' ? \"\".concat(event) : event.type;\n } catch (e) {\n throw new Error('Events must be strings or objects with a string event.type property.');\n }\n}\nfunction getActionType(action) {\n try {\n return isString(action) || typeof action === 'number' ? \"\".concat(action) : isFunction(action) ? action.name : action.type;\n } catch (e) {\n throw new Error('Actions must be strings or objects with a string action.type property.');\n }\n}\nfunction toStatePath(stateId, delimiter) {\n try {\n if (isArray(stateId)) {\n return stateId;\n }\n\n return stateId.toString().split(delimiter);\n } catch (e) {\n throw new Error(\"'\".concat(stateId, \"' is not a valid state path.\"));\n }\n}\nfunction isStateLike(state) {\n return typeof state === 'object' && 'value' in state && 'context' in state && 'event' in state && '_event' in state;\n}\nfunction toStateValue(stateValue, delimiter) {\n if (isStateLike(stateValue)) {\n return stateValue.value;\n }\n\n if (isArray(stateValue)) {\n return pathToStateValue(stateValue);\n }\n\n if (typeof stateValue !== 'string') {\n return stateValue;\n }\n\n var statePath = toStatePath(stateValue, delimiter);\n return pathToStateValue(statePath);\n}\nfunction pathToStateValue(statePath) {\n if (statePath.length === 1) {\n return statePath[0];\n }\n\n var value = {};\n var marker = value;\n\n for (var i = 0; i < statePath.length - 1; i++) {\n if (i === statePath.length - 2) {\n marker[statePath[i]] = statePath[i + 1];\n } else {\n marker[statePath[i]] = {};\n marker = marker[statePath[i]];\n }\n }\n\n return value;\n}\nfunction mapValues(collection, iteratee) {\n var result = {};\n var collectionKeys = Object.keys(collection);\n\n for (var i = 0; i < collectionKeys.length; i++) {\n var key = collectionKeys[i];\n result[key] = iteratee(collection[key], key, collection, i);\n }\n\n return result;\n}\nfunction mapFilterValues(collection, iteratee, predicate) {\n var e_1, _a;\n\n var result = {};\n\n try {\n for (var _b = __values(Object.keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n var item = collection[key];\n\n if (!predicate(item)) {\n continue;\n }\n\n result[key] = iteratee(item, key, collection);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return result;\n}\n/**\r\n * Retrieves a value at the given path.\r\n * @param props The deep path to the prop of the desired value\r\n */\n\nvar path = function (props) {\n return function (object) {\n var e_2, _a;\n\n var result = object;\n\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n result = result[prop];\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n return result;\n };\n};\n/**\r\n * Retrieves a value at the given path via the nested accessor prop.\r\n * @param props The deep path to the prop of the desired value\r\n */\n\nfunction nestedPath(props, accessorProp) {\n return function (object) {\n var e_3, _a;\n\n var result = object;\n\n try {\n for (var props_2 = __values(props), props_2_1 = props_2.next(); !props_2_1.done; props_2_1 = props_2.next()) {\n var prop = props_2_1.value;\n result = result[accessorProp][prop];\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (props_2_1 && !props_2_1.done && (_a = props_2.return)) _a.call(props_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n return result;\n };\n}\nfunction toStatePaths(stateValue) {\n if (!stateValue) {\n return [[]];\n }\n\n if (isString(stateValue)) {\n return [[stateValue]];\n }\n\n var result = flatten(Object.keys(stateValue).map(function (key) {\n var subStateValue = stateValue[key];\n\n if (typeof subStateValue !== 'string' && (!subStateValue || !Object.keys(subStateValue).length)) {\n return [[key]];\n }\n\n return toStatePaths(stateValue[key]).map(function (subPath) {\n return [key].concat(subPath);\n });\n }));\n return result;\n}\nfunction pathsToStateValue(paths) {\n var e_4, _a;\n\n var result = {};\n\n if (paths && paths.length === 1 && paths[0].length === 1) {\n return paths[0][0];\n }\n\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var currentPath = paths_1_1.value;\n var marker = result; // tslint:disable-next-line:prefer-for-of\n\n for (var i = 0; i < currentPath.length; i++) {\n var subPath = currentPath[i];\n\n if (i === currentPath.length - 2) {\n marker[subPath] = currentPath[i + 1];\n break;\n }\n\n marker[subPath] = marker[subPath] || {};\n marker = marker[subPath];\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n return result;\n}\nfunction flatten(array) {\n var _a;\n\n return (_a = []).concat.apply(_a, __spreadArray([], __read(array), false));\n}\nfunction toArrayStrict(value) {\n if (isArray(value)) {\n return value;\n }\n\n return [value];\n}\nfunction toArray(value) {\n if (value === undefined) {\n return [];\n }\n\n return toArrayStrict(value);\n}\nfunction mapContext(mapper, context, _event) {\n var e_5, _a;\n\n if (isFunction(mapper)) {\n return mapper(context, _event.data);\n }\n\n var result = {};\n\n try {\n for (var _b = __values(Object.keys(mapper)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n var subMapper = mapper[key];\n\n if (isFunction(subMapper)) {\n result[key] = subMapper(context, _event.data);\n } else {\n result[key] = subMapper;\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n return result;\n}\nfunction isBuiltInEvent(eventType) {\n return /^(done|error)\\./.test(eventType);\n}\nfunction isPromiseLike(value) {\n if (value instanceof Promise) {\n return true;\n } // Check if shape matches the Promise/A+ specification for a \"thenable\".\n\n\n if (value !== null && (isFunction(value) || typeof value === 'object') && isFunction(value.then)) {\n return true;\n }\n\n return false;\n}\nfunction isBehavior(value) {\n return value !== null && typeof value === 'object' && 'transition' in value && typeof value.transition === 'function';\n}\nfunction partition(items, predicate) {\n var e_6, _a;\n\n var _b = __read([[], []], 2),\n truthy = _b[0],\n falsy = _b[1];\n\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var item = items_1_1.value;\n\n if (predicate(item)) {\n truthy.push(item);\n } else {\n falsy.push(item);\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n\n return [truthy, falsy];\n}\nfunction updateHistoryStates(hist, stateValue) {\n return mapValues(hist.states, function (subHist, key) {\n if (!subHist) {\n return undefined;\n }\n\n var subStateValue = (isString(stateValue) ? undefined : stateValue[key]) || (subHist ? subHist.current : undefined);\n\n if (!subStateValue) {\n return undefined;\n }\n\n return {\n current: subStateValue,\n states: updateHistoryStates(subHist, subStateValue)\n };\n });\n}\nfunction updateHistoryValue(hist, stateValue) {\n return {\n current: stateValue,\n states: updateHistoryStates(hist, stateValue)\n };\n}\nfunction updateContext(context, _event, assignActions, state) {\n if (!IS_PRODUCTION) {\n warn(!!context, 'Attempting to update undefined context');\n }\n\n var updatedContext = context ? assignActions.reduce(function (acc, assignAction) {\n var e_7, _a;\n\n var assignment = assignAction.assignment;\n var meta = {\n state: state,\n action: assignAction,\n _event: _event\n };\n var partialUpdate = {};\n\n if (isFunction(assignment)) {\n partialUpdate = assignment(acc, _event.data, meta);\n } else {\n try {\n for (var _b = __values(Object.keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n var propAssignment = assignment[key];\n partialUpdate[key] = isFunction(propAssignment) ? propAssignment(acc, _event.data, meta) : propAssignment;\n }\n } catch (e_7_1) {\n e_7 = {\n error: e_7_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_7) throw e_7.error;\n }\n }\n }\n\n return Object.assign({}, acc, partialUpdate);\n }, context) : context;\n return updatedContext;\n} // tslint:disable-next-line:no-empty\n\nvar warn = function () {};\n\nif (!IS_PRODUCTION) {\n warn = function (condition, message) {\n var error = condition instanceof Error ? condition : undefined;\n\n if (!error && condition) {\n return;\n }\n\n if (console !== undefined) {\n var args = [\"Warning: \".concat(message)];\n\n if (error) {\n args.push(error);\n } // tslint:disable-next-line:no-console\n\n\n console.warn.apply(console, args);\n }\n };\n}\nfunction isArray(value) {\n return Array.isArray(value);\n} // tslint:disable-next-line:ban-types\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction toGuard(condition, guardMap) {\n if (!condition) {\n return undefined;\n }\n\n if (isString(condition)) {\n return {\n type: DEFAULT_GUARD_TYPE,\n name: condition,\n predicate: guardMap ? guardMap[condition] : undefined\n };\n }\n\n if (isFunction(condition)) {\n return {\n type: DEFAULT_GUARD_TYPE,\n name: condition.name,\n predicate: condition\n };\n }\n\n return condition;\n}\nfunction isObservable(value) {\n try {\n return 'subscribe' in value && isFunction(value.subscribe);\n } catch (e) {\n return false;\n }\n}\nvar symbolObservable = /*#__PURE__*/function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n}(); // TODO: to be removed in v5, left it out just to minimize the scope of the change and maintain compatibility with older versions of integration paackages\n\nvar interopSymbols = (_a = {}, _a[symbolObservable] = function () {\n return this;\n}, _a[Symbol.observable] = function () {\n return this;\n}, _a);\nfunction isMachine(value) {\n return !!value && '__xstatenode' in value;\n}\nfunction isActor(value) {\n return !!value && typeof value.send === 'function';\n}\nvar uniqueId = /*#__PURE__*/function () {\n var currentId = 0;\n return function () {\n currentId++;\n return currentId.toString(16);\n };\n}();\nfunction toEventObject(event, payload // id?: TEvent['type']\n) {\n if (isString(event) || typeof event === 'number') {\n return __assign({\n type: event\n }, payload);\n }\n\n return event;\n}\nfunction toSCXMLEvent(event, scxmlEvent) {\n if (!isString(event) && '$$type' in event && event.$$type === 'scxml') {\n return event;\n }\n\n var eventObject = toEventObject(event);\n return __assign({\n name: eventObject.type,\n data: eventObject,\n $$type: 'scxml',\n type: 'external'\n }, scxmlEvent);\n}\nfunction toTransitionConfigArray(event, configLike) {\n var transitions = toArrayStrict(configLike).map(function (transitionLike) {\n if (typeof transitionLike === 'undefined' || typeof transitionLike === 'string' || isMachine(transitionLike)) {\n return {\n target: transitionLike,\n event: event\n };\n }\n\n return __assign(__assign({}, transitionLike), {\n event: event\n });\n });\n return transitions;\n}\nfunction normalizeTarget(target) {\n if (target === undefined || target === TARGETLESS_KEY) {\n return undefined;\n }\n\n return toArray(target);\n}\nfunction reportUnhandledExceptionOnInvocation(originalError, currentError, id) {\n if (!IS_PRODUCTION) {\n var originalStackTrace = originalError.stack ? \" Stacktrace was '\".concat(originalError.stack, \"'\") : '';\n\n if (originalError === currentError) {\n // tslint:disable-next-line:no-console\n console.error(\"Missing onError handler for invocation '\".concat(id, \"', error was '\").concat(originalError, \"'.\").concat(originalStackTrace));\n } else {\n var stackTrace = currentError.stack ? \" Stacktrace was '\".concat(currentError.stack, \"'\") : ''; // tslint:disable-next-line:no-console\n\n console.error(\"Missing onError handler and/or unhandled exception/promise rejection for invocation '\".concat(id, \"'. \") + \"Original error: '\".concat(originalError, \"'. \").concat(originalStackTrace, \" Current error is '\").concat(currentError, \"'.\").concat(stackTrace));\n }\n }\n}\nfunction evaluateGuard(machine, guard, context, _event, state) {\n var guards = machine.options.guards;\n var guardMeta = {\n state: state,\n cond: guard,\n _event: _event\n }; // TODO: do not hardcode!\n\n if (guard.type === DEFAULT_GUARD_TYPE) {\n return ((guards === null || guards === void 0 ? void 0 : guards[guard.name]) || guard.predicate)(context, _event.data, guardMeta);\n }\n\n var condFn = guards === null || guards === void 0 ? void 0 : guards[guard.type];\n\n if (!condFn) {\n throw new Error(\"Guard '\".concat(guard.type, \"' is not implemented on machine '\").concat(machine.id, \"'.\"));\n }\n\n return condFn(context, _event.data, guardMeta);\n}\nfunction toInvokeSource(src) {\n if (typeof src === 'string') {\n return {\n type: src\n };\n }\n\n return src;\n}\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n var noop = function () {};\n\n var isObserver = typeof nextHandler === 'object';\n var self = isObserver ? nextHandler : null;\n return {\n next: ((isObserver ? nextHandler.next : nextHandler) || noop).bind(self),\n error: ((isObserver ? nextHandler.error : errorHandler) || noop).bind(self),\n complete: ((isObserver ? nextHandler.complete : completionHandler) || noop).bind(self)\n };\n}\nfunction createInvokeId(stateNodeId, index) {\n return \"\".concat(stateNodeId, \":invocation[\").concat(index, \"]\");\n}\nfunction isRaisableAction(action) {\n return (action.type === raise || action.type === send && action.to === SpecialTargets.Internal) && typeof action.delay !== 'number';\n}\n\nexport { createInvokeId, evaluateGuard, flatten, getActionType, getEventType, interopSymbols, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isRaisableAction, isStateLike, isString, keys, mapContext, mapFilterValues, mapValues, matchesState, nestedPath, normalizeTarget, partition, path, pathToStateValue, pathsToStateValue, reportUnhandledExceptionOnInvocation, symbolObservable, toArray, toArrayStrict, toEventObject, toGuard, toInvokeSource, toObserver, toSCXMLEvent, toStatePath, toStatePaths, toStateValue, toTransitionConfigArray, uniqueId, updateContext, updateHistoryStates, updateHistoryValue, warn };\n","import { __assign, __spreadArray, __read, __values } from './_virtual/_tslib.js';\nimport { SpecialTargets, ActionTypes } from './types.js';\nimport { init, raise as raise$1, send as send$1, update, log as log$1, cancel as cancel$1, assign as assign$1, error as error$1, stop as stop$1, pure as pure$1, choose as choose$1 } from './actionTypes.js';\nimport * as actionTypes from './actionTypes.js';\nexport { actionTypes };\nimport { toSCXMLEvent, isString, isFunction, toEventObject, getEventType, updateContext, flatten, isArray, toArray, toGuard, evaluateGuard, warn } from './utils.js';\nimport { IS_PRODUCTION } from './environment.js';\n\nvar initEvent = /*#__PURE__*/toSCXMLEvent({\n type: init\n});\nfunction getActionFunction(actionType, actionFunctionMap) {\n return actionFunctionMap ? actionFunctionMap[actionType] || undefined : undefined;\n}\nfunction toActionObject(action, actionFunctionMap) {\n var actionObject;\n\n if (isString(action) || typeof action === 'number') {\n var exec = getActionFunction(action, actionFunctionMap);\n\n if (isFunction(exec)) {\n actionObject = {\n type: action,\n exec: exec\n };\n } else if (exec) {\n actionObject = exec;\n } else {\n actionObject = {\n type: action,\n exec: undefined\n };\n }\n } else if (isFunction(action)) {\n actionObject = {\n // Convert action to string if unnamed\n type: action.name || action.toString(),\n exec: action\n };\n } else {\n var exec = getActionFunction(action.type, actionFunctionMap);\n\n if (isFunction(exec)) {\n actionObject = __assign(__assign({}, action), {\n exec: exec\n });\n } else if (exec) {\n var actionType = exec.type || action.type;\n actionObject = __assign(__assign(__assign({}, exec), action), {\n type: actionType\n });\n } else {\n actionObject = action;\n }\n }\n\n return actionObject;\n}\nvar toActionObjects = function (action, actionFunctionMap) {\n if (!action) {\n return [];\n }\n\n var actions = isArray(action) ? action : [action];\n return actions.map(function (subAction) {\n return toActionObject(subAction, actionFunctionMap);\n });\n};\nfunction toActivityDefinition(action) {\n var actionObject = toActionObject(action);\n return __assign(__assign({\n id: isString(action) ? action : actionObject.id\n }, actionObject), {\n type: actionObject.type\n });\n}\n/**\r\n * Raises an event. This places the event in the internal event queue, so that\r\n * the event is immediately consumed by the machine in the current step.\r\n *\r\n * @param eventType The event to raise.\r\n */\n\nfunction raise(event, options) {\n return {\n type: raise$1,\n event: typeof event === 'function' ? event : toEventObject(event),\n delay: options ? options.delay : undefined,\n id: options === null || options === void 0 ? void 0 : options.id\n };\n}\nfunction resolveRaise(action, ctx, _event, delaysMap) {\n var meta = {\n _event: _event\n };\n var resolvedEvent = toSCXMLEvent(isFunction(action.event) ? action.event(ctx, _event.data, meta) : action.event);\n var resolvedDelay;\n\n if (isString(action.delay)) {\n var configDelay = delaysMap && delaysMap[action.delay];\n resolvedDelay = isFunction(configDelay) ? configDelay(ctx, _event.data, meta) : configDelay;\n } else {\n resolvedDelay = isFunction(action.delay) ? action.delay(ctx, _event.data, meta) : action.delay;\n }\n\n return __assign(__assign({}, action), {\n type: raise$1,\n _event: resolvedEvent,\n delay: resolvedDelay\n });\n}\n/**\r\n * Sends an event. This returns an action that will be read by an interpreter to\r\n * send the event in the next step, after the current step is finished executing.\r\n *\r\n * @deprecated Use the `sendTo(...)` action creator instead.\r\n *\r\n * @param event The event to send.\r\n * @param options Options to pass into the send event:\r\n * - `id` - The unique send event identifier (used with `cancel()`).\r\n * - `delay` - The number of milliseconds to delay the sending of the event.\r\n * - `to` - The target of this event (by default, the machine the event was sent from).\r\n */\n\nfunction send(event, options) {\n return {\n to: options ? options.to : undefined,\n type: send$1,\n event: isFunction(event) ? event : toEventObject(event),\n delay: options ? options.delay : undefined,\n // TODO: don't auto-generate IDs here like that\n // there is too big chance of the ID collision\n id: options && options.id !== undefined ? options.id : isFunction(event) ? event.name : getEventType(event)\n };\n}\nfunction resolveSend(action, ctx, _event, delaysMap) {\n var meta = {\n _event: _event\n }; // TODO: helper function for resolving Expr\n\n var resolvedEvent = toSCXMLEvent(isFunction(action.event) ? action.event(ctx, _event.data, meta) : action.event);\n var resolvedDelay;\n\n if (isString(action.delay)) {\n var configDelay = delaysMap && delaysMap[action.delay];\n resolvedDelay = isFunction(configDelay) ? configDelay(ctx, _event.data, meta) : configDelay;\n } else {\n resolvedDelay = isFunction(action.delay) ? action.delay(ctx, _event.data, meta) : action.delay;\n }\n\n var resolvedTarget = isFunction(action.to) ? action.to(ctx, _event.data, meta) : action.to;\n return __assign(__assign({}, action), {\n to: resolvedTarget,\n _event: resolvedEvent,\n event: resolvedEvent.data,\n delay: resolvedDelay\n });\n}\n/**\r\n * Sends an event to this machine's parent.\r\n *\r\n * @param event The event to send to the parent machine.\r\n * @param options Options to pass into the send event.\r\n */\n\nfunction sendParent(event, options) {\n return send(event, __assign(__assign({}, options), {\n to: SpecialTargets.Parent\n }));\n}\n/**\r\n * Sends an event to an actor.\r\n *\r\n * @param actor The `ActorRef` to send the event to.\r\n * @param event The event to send, or an expression that evaluates to the event to send\r\n * @param options Send action options\r\n * @returns An XState send action object\r\n */\n\nfunction sendTo(actor, event, options) {\n return send(event, __assign(__assign({}, options), {\n to: actor\n }));\n}\n/**\r\n * Sends an update event to this machine's parent.\r\n */\n\nfunction sendUpdate() {\n return sendParent(update);\n}\n/**\r\n * Sends an event back to the sender of the original event.\r\n *\r\n * @param event The event to send back to the sender\r\n * @param options Options to pass into the send event\r\n */\n\nfunction respond(event, options) {\n return send(event, __assign(__assign({}, options), {\n to: function (_, __, _a) {\n var _event = _a._event;\n return _event.origin; // TODO: handle when _event.origin is undefined\n }\n }));\n}\n\nvar defaultLogExpr = function (context, event) {\n return {\n context: context,\n event: event\n };\n};\n/**\r\n *\r\n * @param expr The expression function to evaluate which will be logged.\r\n * Takes in 2 arguments:\r\n * - `ctx` - the current state context\r\n * - `event` - the event that caused this action to be executed.\r\n * @param label The label to give to the logged expression.\r\n */\n\n\nfunction log(expr, label) {\n if (expr === void 0) {\n expr = defaultLogExpr;\n }\n\n return {\n type: log$1,\n label: label,\n expr: expr\n };\n}\nvar resolveLog = function (action, ctx, _event) {\n return __assign(__assign({}, action), {\n value: isString(action.expr) ? action.expr : action.expr(ctx, _event.data, {\n _event: _event\n })\n });\n};\n/**\r\n * Cancels an in-flight `send(...)` action. A canceled sent action will not\r\n * be executed, nor will its event be sent, unless it has already been sent\r\n * (e.g., if `cancel(...)` is called after the `send(...)` action's `delay`).\r\n *\r\n * @param sendId The `id` of the `send(...)` action to cancel.\r\n */\n\nvar cancel = function (sendId) {\n return {\n type: cancel$1,\n sendId: sendId\n };\n};\n/**\r\n * Starts an activity.\r\n *\r\n * @param activity The activity to start.\r\n */\n\nfunction start(activity) {\n var activityDef = toActivityDefinition(activity);\n return {\n type: ActionTypes.Start,\n activity: activityDef,\n exec: undefined\n };\n}\n/**\r\n * Stops an activity.\r\n *\r\n * @param actorRef The activity to stop.\r\n */\n\nfunction stop(actorRef) {\n var activity = isFunction(actorRef) ? actorRef : toActivityDefinition(actorRef);\n return {\n type: ActionTypes.Stop,\n activity: activity,\n exec: undefined\n };\n}\nfunction resolveStop(action, context, _event) {\n var actorRefOrString = isFunction(action.activity) ? action.activity(context, _event.data) : action.activity;\n var resolvedActorRef = typeof actorRefOrString === 'string' ? {\n id: actorRefOrString\n } : actorRefOrString;\n var actionObject = {\n type: ActionTypes.Stop,\n activity: resolvedActorRef\n };\n return actionObject;\n}\n/**\r\n * Updates the current context of the machine.\r\n *\r\n * @param assignment An object that represents the partial context to update.\r\n */\n\nvar assign = function (assignment) {\n return {\n type: assign$1,\n assignment: assignment\n };\n};\nfunction isActionObject(action) {\n return typeof action === 'object' && 'type' in action;\n}\n/**\r\n * Returns an event type that represents an implicit event that\r\n * is sent after the specified `delay`.\r\n *\r\n * @param delayRef The delay in milliseconds\r\n * @param id The state node ID where this event is handled\r\n */\n\nfunction after(delayRef, id) {\n var idSuffix = id ? \"#\".concat(id) : '';\n return \"\".concat(ActionTypes.After, \"(\").concat(delayRef, \")\").concat(idSuffix);\n}\n/**\r\n * Returns an event that represents that a final state node\r\n * has been reached in the parent state node.\r\n *\r\n * @param id The final state node's parent state node `id`\r\n * @param data The data to pass into the event\r\n */\n\nfunction done(id, data) {\n var type = \"\".concat(ActionTypes.DoneState, \".\").concat(id);\n var eventObject = {\n type: type,\n data: data\n };\n\n eventObject.toString = function () {\n return type;\n };\n\n return eventObject;\n}\n/**\r\n * Returns an event that represents that an invoked service has terminated.\r\n *\r\n * An invoked service is terminated when it has reached a top-level final state node,\r\n * but not when it is canceled.\r\n *\r\n * @param id The final state node ID\r\n * @param data The data to pass into the event\r\n */\n\nfunction doneInvoke(id, data) {\n var type = \"\".concat(ActionTypes.DoneInvoke, \".\").concat(id);\n var eventObject = {\n type: type,\n data: data\n };\n\n eventObject.toString = function () {\n return type;\n };\n\n return eventObject;\n}\nfunction error(id, data) {\n var type = \"\".concat(ActionTypes.ErrorPlatform, \".\").concat(id);\n var eventObject = {\n type: type,\n data: data\n };\n\n eventObject.toString = function () {\n return type;\n };\n\n return eventObject;\n}\nfunction pure(getActions) {\n return {\n type: ActionTypes.Pure,\n get: getActions\n };\n}\n/**\r\n * Forwards (sends) an event to a specified service.\r\n *\r\n * @param target The target service to forward the event to.\r\n * @param options Options to pass into the send action creator.\r\n */\n\nfunction forwardTo(target, options) {\n if (!IS_PRODUCTION && (!target || typeof target === 'function')) {\n var originalTarget_1 = target;\n\n target = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var resolvedTarget = typeof originalTarget_1 === 'function' ? originalTarget_1.apply(void 0, __spreadArray([], __read(args), false)) : originalTarget_1;\n\n if (!resolvedTarget) {\n throw new Error(\"Attempted to forward event to undefined actor. This risks an infinite loop in the sender.\");\n }\n\n return resolvedTarget;\n };\n }\n\n return send(function (_, event) {\n return event;\n }, __assign(__assign({}, options), {\n to: target\n }));\n}\n/**\r\n * Escalates an error by sending it as an event to this machine's parent.\r\n *\r\n * @param errorData The error data to send, or the expression function that\r\n * takes in the `context`, `event`, and `meta`, and returns the error data to send.\r\n * @param options Options to pass into the send action creator.\r\n */\n\nfunction escalate(errorData, options) {\n return sendParent(function (context, event, meta) {\n return {\n type: error$1,\n data: isFunction(errorData) ? errorData(context, event, meta) : errorData\n };\n }, __assign(__assign({}, options), {\n to: SpecialTargets.Parent\n }));\n}\nfunction choose(conds) {\n return {\n type: ActionTypes.Choose,\n conds: conds\n };\n}\n\nvar pluckAssigns = function (actionBlocks) {\n var e_1, _a;\n\n var assignActions = [];\n\n try {\n for (var actionBlocks_1 = __values(actionBlocks), actionBlocks_1_1 = actionBlocks_1.next(); !actionBlocks_1_1.done; actionBlocks_1_1 = actionBlocks_1.next()) {\n var block = actionBlocks_1_1.value;\n var i = 0;\n\n while (i < block.actions.length) {\n if (block.actions[i].type === assign$1) {\n assignActions.push(block.actions[i]);\n block.actions.splice(i, 1);\n continue;\n }\n\n i++;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (actionBlocks_1_1 && !actionBlocks_1_1.done && (_a = actionBlocks_1.return)) _a.call(actionBlocks_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return assignActions;\n};\n\nfunction resolveActions(machine, currentState, currentContext, _event, actionBlocks, predictableExec, preserveActionOrder) {\n if (preserveActionOrder === void 0) {\n preserveActionOrder = false;\n }\n\n var assignActions = preserveActionOrder ? [] : pluckAssigns(actionBlocks);\n var updatedContext = assignActions.length ? updateContext(currentContext, _event, assignActions, currentState) : currentContext;\n var preservedContexts = preserveActionOrder ? [currentContext] : undefined;\n var deferredToBlockEnd = [];\n\n function handleAction(blockType, actionObject) {\n var _a;\n\n switch (actionObject.type) {\n case raise$1:\n {\n var raisedAction = resolveRaise(actionObject, updatedContext, _event, machine.options.delays);\n\n if (predictableExec && typeof raisedAction.delay === 'number') {\n predictableExec(raisedAction, updatedContext, _event);\n }\n\n return raisedAction;\n }\n\n case send$1:\n var sendAction = resolveSend(actionObject, updatedContext, _event, machine.options.delays); // TODO: fix ActionTypes.Init\n\n if (!IS_PRODUCTION) {\n var configuredDelay = actionObject.delay; // warn after resolving as we can create better contextual message here\n\n warn(!isString(configuredDelay) || typeof sendAction.delay === 'number', // tslint:disable-next-line:max-line-length\n \"No delay reference for delay expression '\".concat(configuredDelay, \"' was found on machine '\").concat(machine.id, \"'\"));\n }\n\n if (predictableExec && sendAction.to !== SpecialTargets.Internal) {\n if (blockType === 'entry') {\n deferredToBlockEnd.push(sendAction);\n } else {\n predictableExec(sendAction, updatedContext, _event);\n }\n }\n\n return sendAction;\n\n case log$1:\n {\n var resolved = resolveLog(actionObject, updatedContext, _event);\n predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(resolved, updatedContext, _event);\n return resolved;\n }\n\n case choose$1:\n {\n var chooseAction = actionObject;\n var matchedActions = (_a = chooseAction.conds.find(function (condition) {\n var guard = toGuard(condition.cond, machine.options.guards);\n return !guard || evaluateGuard(machine, guard, updatedContext, _event, !predictableExec ? currentState : undefined);\n })) === null || _a === void 0 ? void 0 : _a.actions;\n\n if (!matchedActions) {\n return [];\n }\n\n var _b = __read(resolveActions(machine, currentState, updatedContext, _event, [{\n type: blockType,\n actions: toActionObjects(toArray(matchedActions), machine.options.actions)\n }], predictableExec, preserveActionOrder), 2),\n resolvedActionsFromChoose = _b[0],\n resolvedContextFromChoose = _b[1];\n\n updatedContext = resolvedContextFromChoose;\n preservedContexts === null || preservedContexts === void 0 ? void 0 : preservedContexts.push(updatedContext);\n return resolvedActionsFromChoose;\n }\n\n case pure$1:\n {\n var matchedActions = actionObject.get(updatedContext, _event.data);\n\n if (!matchedActions) {\n return [];\n }\n\n var _c = __read(resolveActions(machine, currentState, updatedContext, _event, [{\n type: blockType,\n actions: toActionObjects(toArray(matchedActions), machine.options.actions)\n }], predictableExec, preserveActionOrder), 2),\n resolvedActionsFromPure = _c[0],\n resolvedContext = _c[1];\n\n updatedContext = resolvedContext;\n preservedContexts === null || preservedContexts === void 0 ? void 0 : preservedContexts.push(updatedContext);\n return resolvedActionsFromPure;\n }\n\n case stop$1:\n {\n var resolved = resolveStop(actionObject, updatedContext, _event);\n predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(resolved, currentContext, _event);\n return resolved;\n }\n\n case assign$1:\n {\n updatedContext = updateContext(updatedContext, _event, [actionObject], !predictableExec ? currentState : undefined);\n preservedContexts === null || preservedContexts === void 0 ? void 0 : preservedContexts.push(updatedContext);\n break;\n }\n\n default:\n var resolvedActionObject = toActionObject(actionObject, machine.options.actions);\n var exec_1 = resolvedActionObject.exec;\n\n if (predictableExec) {\n predictableExec(resolvedActionObject, updatedContext, _event);\n } else if (exec_1 && preservedContexts) {\n var contextIndex_1 = preservedContexts.length - 1;\n\n var wrapped = __assign(__assign({}, resolvedActionObject), {\n exec: function (_ctx) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n exec_1.apply(void 0, __spreadArray([preservedContexts[contextIndex_1]], __read(args), false));\n }\n });\n\n resolvedActionObject = wrapped;\n }\n\n return resolvedActionObject;\n }\n }\n\n function processBlock(block) {\n var e_2, _a;\n\n var resolvedActions = [];\n\n try {\n for (var _b = __values(block.actions), _c = _b.next(); !_c.done; _c = _b.next()) {\n var action = _c.value;\n var resolved = handleAction(block.type, action);\n\n if (resolved) {\n resolvedActions = resolvedActions.concat(resolved);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n deferredToBlockEnd.forEach(function (action) {\n predictableExec(action, updatedContext, _event);\n });\n deferredToBlockEnd.length = 0;\n return resolvedActions;\n }\n\n var resolvedActions = flatten(actionBlocks.map(processBlock));\n return [resolvedActions, updatedContext];\n}\n\nexport { after, assign, cancel, choose, done, doneInvoke, error, escalate, forwardTo, getActionFunction, initEvent, isActionObject, log, pure, raise, resolveActions, resolveLog, resolveRaise, resolveSend, resolveStop, respond, send, sendParent, sendTo, sendUpdate, start, stop, toActionObject, toActionObjects, toActivityDefinition };\n","/**\r\n * Maintains a stack of the current service in scope.\r\n * This is used to provide the correct service to spawn().\r\n */\nvar serviceStack = [];\nvar provide = function (service, fn) {\n serviceStack.push(service);\n var result = fn(service);\n serviceStack.pop();\n return result;\n};\nvar consume = function (fn) {\n return fn(serviceStack[serviceStack.length - 1]);\n};\n\nexport { consume, provide };\n","import { __assign } from './_virtual/_tslib.js';\nimport { symbolObservable, toInvokeSource, mapContext, isMachine } from './utils.js';\nimport { provide } from './serviceScope.js';\n\nfunction createNullActor(id) {\n var _a;\n\n return _a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function () {\n return {\n unsubscribe: function () {\n return void 0;\n }\n };\n },\n getSnapshot: function () {\n return undefined;\n },\n toJSON: function () {\n return {\n id: id\n };\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a;\n}\n/**\r\n * Creates a deferred actor that is able to be invoked given the provided\r\n * invocation information in its `.meta` value.\r\n *\r\n * @param invokeDefinition The meta information needed to invoke the actor.\r\n */\n\nfunction createInvocableActor(invokeDefinition, machine, context, _event) {\n var _a;\n\n var invokeSrc = toInvokeSource(invokeDefinition.src);\n var serviceCreator = (_a = machine === null || machine === void 0 ? void 0 : machine.options.services) === null || _a === void 0 ? void 0 : _a[invokeSrc.type];\n var resolvedData = invokeDefinition.data ? mapContext(invokeDefinition.data, context, _event) : undefined;\n var tempActor = serviceCreator ? createDeferredActor(serviceCreator, invokeDefinition.id, resolvedData) : createNullActor(invokeDefinition.id); // @ts-ignore\n\n tempActor.meta = invokeDefinition;\n return tempActor;\n}\nfunction createDeferredActor(entity, id, data) {\n var tempActor = createNullActor(id); // @ts-ignore\n\n tempActor.deferred = true;\n\n if (isMachine(entity)) {\n // \"mute\" the existing service scope so potential spawned actors within the `.initialState` stay deferred here\n var initialState_1 = tempActor.state = provide(undefined, function () {\n return (data ? entity.withContext(data) : entity).initialState;\n });\n\n tempActor.getSnapshot = function () {\n return initialState_1;\n };\n }\n\n return tempActor;\n}\nfunction isActor(item) {\n try {\n return typeof item.send === 'function';\n } catch (e) {\n return false;\n }\n}\nfunction isSpawnedActor(item) {\n return isActor(item) && 'id' in item;\n} // TODO: refactor the return type, this could be written in a better way but it's best to avoid unneccessary breaking changes now\n\nfunction toActorRef(actorRefLike) {\n var _a;\n\n return __assign((_a = {\n subscribe: function () {\n return {\n unsubscribe: function () {\n return void 0;\n }\n };\n },\n id: 'anonymous',\n getSnapshot: function () {\n return undefined;\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a), actorRefLike);\n}\n\nexport { createDeferredActor, createInvocableActor, createNullActor, isActor, isSpawnedActor, toActorRef };\n","import { __values, __spreadArray, __read } from './_virtual/_tslib.js';\nimport { flatten } from './utils.js';\n\nvar isLeafNode = function (stateNode) {\n return stateNode.type === 'atomic' || stateNode.type === 'final';\n};\nfunction getAllChildren(stateNode) {\n return Object.keys(stateNode.states).map(function (key) {\n return stateNode.states[key];\n });\n}\nfunction getChildren(stateNode) {\n return getAllChildren(stateNode).filter(function (sn) {\n return sn.type !== 'history';\n });\n}\nfunction getAllStateNodes(stateNode) {\n var stateNodes = [stateNode];\n\n if (isLeafNode(stateNode)) {\n return stateNodes;\n }\n\n return stateNodes.concat(flatten(getChildren(stateNode).map(getAllStateNodes)));\n}\nfunction getConfiguration(prevStateNodes, stateNodes) {\n var e_1, _a, e_2, _b, e_3, _c, e_4, _d;\n\n var prevConfiguration = new Set(prevStateNodes);\n var prevAdjList = getAdjList(prevConfiguration);\n var configuration = new Set(stateNodes);\n\n try {\n // add all ancestors\n for (var configuration_1 = __values(configuration), configuration_1_1 = configuration_1.next(); !configuration_1_1.done; configuration_1_1 = configuration_1.next()) {\n var s = configuration_1_1.value;\n var m = s.parent;\n\n while (m && !configuration.has(m)) {\n configuration.add(m);\n m = m.parent;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (configuration_1_1 && !configuration_1_1.done && (_a = configuration_1.return)) _a.call(configuration_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n var adjList = getAdjList(configuration);\n\n try {\n // add descendants\n for (var configuration_2 = __values(configuration), configuration_2_1 = configuration_2.next(); !configuration_2_1.done; configuration_2_1 = configuration_2.next()) {\n var s = configuration_2_1.value; // if previously active, add existing child nodes\n\n if (s.type === 'compound' && (!adjList.get(s) || !adjList.get(s).length)) {\n if (prevAdjList.get(s)) {\n prevAdjList.get(s).forEach(function (sn) {\n return configuration.add(sn);\n });\n } else {\n s.initialStateNodes.forEach(function (sn) {\n return configuration.add(sn);\n });\n }\n } else {\n if (s.type === 'parallel') {\n try {\n for (var _e = (e_3 = void 0, __values(getChildren(s))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var child = _f.value;\n\n if (!configuration.has(child)) {\n configuration.add(child);\n\n if (prevAdjList.get(child)) {\n prevAdjList.get(child).forEach(function (sn) {\n return configuration.add(sn);\n });\n } else {\n child.initialStateNodes.forEach(function (sn) {\n return configuration.add(sn);\n });\n }\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_c = _e.return)) _c.call(_e);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (configuration_2_1 && !configuration_2_1.done && (_b = configuration_2.return)) _b.call(configuration_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n try {\n // add all ancestors\n for (var configuration_3 = __values(configuration), configuration_3_1 = configuration_3.next(); !configuration_3_1.done; configuration_3_1 = configuration_3.next()) {\n var s = configuration_3_1.value;\n var m = s.parent;\n\n while (m && !configuration.has(m)) {\n configuration.add(m);\n m = m.parent;\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (configuration_3_1 && !configuration_3_1.done && (_d = configuration_3.return)) _d.call(configuration_3);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n return configuration;\n}\n\nfunction getValueFromAdj(baseNode, adjList) {\n var childStateNodes = adjList.get(baseNode);\n\n if (!childStateNodes) {\n return {}; // todo: fix?\n }\n\n if (baseNode.type === 'compound') {\n var childStateNode = childStateNodes[0];\n\n if (childStateNode) {\n if (isLeafNode(childStateNode)) {\n return childStateNode.key;\n }\n } else {\n return {};\n }\n }\n\n var stateValue = {};\n childStateNodes.forEach(function (csn) {\n stateValue[csn.key] = getValueFromAdj(csn, adjList);\n });\n return stateValue;\n}\n\nfunction getAdjList(configuration) {\n var e_5, _a;\n\n var adjList = new Map();\n\n try {\n for (var configuration_4 = __values(configuration), configuration_4_1 = configuration_4.next(); !configuration_4_1.done; configuration_4_1 = configuration_4.next()) {\n var s = configuration_4_1.value;\n\n if (!adjList.has(s)) {\n adjList.set(s, []);\n }\n\n if (s.parent) {\n if (!adjList.has(s.parent)) {\n adjList.set(s.parent, []);\n }\n\n adjList.get(s.parent).push(s);\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (configuration_4_1 && !configuration_4_1.done && (_a = configuration_4.return)) _a.call(configuration_4);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n return adjList;\n}\nfunction getValue(rootNode, configuration) {\n var config = getConfiguration([rootNode], configuration);\n return getValueFromAdj(rootNode, getAdjList(config));\n}\nfunction has(iterable, item) {\n if (Array.isArray(iterable)) {\n return iterable.some(function (member) {\n return member === item;\n });\n }\n\n if (iterable instanceof Set) {\n return iterable.has(item);\n }\n\n return false; // TODO: fix\n}\nfunction nextEvents(configuration) {\n return __spreadArray([], __read(new Set(flatten(__spreadArray([], __read(configuration.map(function (sn) {\n return sn.ownEvents;\n })), false)))), false);\n}\nfunction isInFinalState(configuration, stateNode) {\n if (stateNode.type === 'compound') {\n return getChildren(stateNode).some(function (s) {\n return s.type === 'final' && has(configuration, s);\n });\n }\n\n if (stateNode.type === 'parallel') {\n return getChildren(stateNode).every(function (sn) {\n return isInFinalState(configuration, sn);\n });\n }\n\n return false;\n}\nfunction getMeta(configuration) {\n if (configuration === void 0) {\n configuration = [];\n }\n\n return configuration.reduce(function (acc, stateNode) {\n if (stateNode.meta !== undefined) {\n acc[stateNode.id] = stateNode.meta;\n }\n\n return acc;\n }, {});\n}\nfunction getTagsFromConfiguration(configuration) {\n return new Set(flatten(configuration.map(function (sn) {\n return sn.tags;\n })));\n}\n\nexport { getAdjList, getAllChildren, getAllStateNodes, getChildren, getConfiguration, getMeta, getTagsFromConfiguration, getValue, has, isInFinalState, isLeafNode, nextEvents };\n","import { __assign, __spreadArray, __read, __rest } from './_virtual/_tslib.js';\nimport { EMPTY_ACTIVITY_MAP } from './constants.js';\nimport { isString, matchesState, warn } from './utils.js';\nimport { getMeta, nextEvents } from './stateUtils.js';\nimport { initEvent } from './actions.js';\nimport { IS_PRODUCTION } from './environment.js';\n\nfunction stateValuesEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a === undefined || b === undefined) {\n return false;\n }\n\n if (isString(a) || isString(b)) {\n return a === b;\n }\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n return aKeys.length === bKeys.length && aKeys.every(function (key) {\n return stateValuesEqual(a[key], b[key]);\n });\n}\nfunction isStateConfig(state) {\n if (typeof state !== 'object' || state === null) {\n return false;\n }\n\n return 'value' in state && '_event' in state;\n}\n/**\r\n * @deprecated Use `isStateConfig(object)` or `state instanceof State` instead.\r\n */\n\nvar isState = isStateConfig;\nfunction bindActionToState(action, state) {\n var exec = action.exec;\n\n var boundAction = __assign(__assign({}, action), {\n exec: exec !== undefined ? function () {\n return exec(state.context, state.event, {\n action: action,\n state: state,\n _event: state._event\n });\n } : undefined\n });\n\n return boundAction;\n}\n\nvar State =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n /**\r\n * Creates a new State instance.\r\n * @param value The state value\r\n * @param context The extended state\r\n * @param historyValue The tree representing historical values of the state nodes\r\n * @param history The previous state\r\n * @param actions An array of action objects to execute as side-effects\r\n * @param activities A mapping of activities and whether they are started (`true`) or stopped (`false`).\r\n * @param meta\r\n * @param events Internal event queue. Should be empty with run-to-completion semantics.\r\n * @param configuration\r\n */\n function State(config) {\n var _this = this;\n\n var _a;\n\n this.actions = [];\n this.activities = EMPTY_ACTIVITY_MAP;\n this.meta = {};\n this.events = [];\n this.value = config.value;\n this.context = config.context;\n this._event = config._event;\n this._sessionid = config._sessionid;\n this.event = this._event.data;\n this.historyValue = config.historyValue;\n this.history = config.history;\n this.actions = config.actions || [];\n this.activities = config.activities || EMPTY_ACTIVITY_MAP;\n this.meta = getMeta(config.configuration);\n this.events = config.events || [];\n this.matches = this.matches.bind(this);\n this.toStrings = this.toStrings.bind(this);\n this.configuration = config.configuration;\n this.transitions = config.transitions;\n this.children = config.children;\n this.done = !!config.done;\n this.tags = (_a = Array.isArray(config.tags) ? new Set(config.tags) : config.tags) !== null && _a !== void 0 ? _a : new Set();\n this.machine = config.machine;\n Object.defineProperty(this, 'nextEvents', {\n get: function () {\n return nextEvents(_this.configuration);\n }\n });\n }\n /**\r\n * Creates a new State instance for the given `stateValue` and `context`.\r\n * @param stateValue\r\n * @param context\r\n */\n\n\n State.from = function (stateValue, context) {\n if (stateValue instanceof State) {\n if (stateValue.context !== context) {\n return new State({\n value: stateValue.value,\n context: context,\n _event: stateValue._event,\n _sessionid: null,\n historyValue: stateValue.historyValue,\n history: stateValue.history,\n actions: [],\n activities: stateValue.activities,\n meta: {},\n events: [],\n configuration: [],\n transitions: [],\n children: {}\n });\n }\n\n return stateValue;\n }\n\n var _event = initEvent;\n return new State({\n value: stateValue,\n context: context,\n _event: _event,\n _sessionid: null,\n historyValue: undefined,\n history: undefined,\n actions: [],\n activities: undefined,\n meta: undefined,\n events: [],\n configuration: [],\n transitions: [],\n children: {}\n });\n };\n /**\r\n * Creates a new State instance for the given `config`.\r\n * @param config The state config\r\n */\n\n\n State.create = function (config) {\n return new State(config);\n };\n /**\r\n * Creates a new `State` instance for the given `stateValue` and `context` with no actions (side-effects).\r\n * @param stateValue\r\n * @param context\r\n */\n\n\n State.inert = function (stateValue, context) {\n if (stateValue instanceof State) {\n if (!stateValue.actions.length) {\n return stateValue;\n }\n\n var _event = initEvent;\n return new State({\n value: stateValue.value,\n context: context,\n _event: _event,\n _sessionid: null,\n historyValue: stateValue.historyValue,\n history: stateValue.history,\n activities: stateValue.activities,\n configuration: stateValue.configuration,\n transitions: [],\n children: {}\n });\n }\n\n return State.from(stateValue, context);\n };\n /**\r\n * Returns an array of all the string leaf state node paths.\r\n * @param stateValue\r\n * @param delimiter The character(s) that separate each subpath in the string state node path.\r\n */\n\n\n State.prototype.toStrings = function (stateValue, delimiter) {\n var _this = this;\n\n if (stateValue === void 0) {\n stateValue = this.value;\n }\n\n if (delimiter === void 0) {\n delimiter = '.';\n }\n\n if (isString(stateValue)) {\n return [stateValue];\n }\n\n var valueKeys = Object.keys(stateValue);\n return valueKeys.concat.apply(valueKeys, __spreadArray([], __read(valueKeys.map(function (key) {\n return _this.toStrings(stateValue[key], delimiter).map(function (s) {\n return key + delimiter + s;\n });\n })), false));\n };\n\n State.prototype.toJSON = function () {\n var _a = this;\n _a.configuration;\n _a.transitions;\n var tags = _a.tags;\n _a.machine;\n var jsonValues = __rest(_a, [\"configuration\", \"transitions\", \"tags\", \"machine\"]);\n\n return __assign(__assign({}, jsonValues), {\n tags: Array.from(tags)\n });\n };\n\n State.prototype.matches = function (parentStateValue) {\n return matchesState(parentStateValue, this.value);\n };\n /**\r\n * Whether the current state configuration has a state node with the specified `tag`.\r\n * @param tag\r\n */\n\n\n State.prototype.hasTag = function (tag) {\n return this.tags.has(tag);\n };\n /**\r\n * Determines whether sending the `event` will cause a non-forbidden transition\r\n * to be selected, even if the transitions have no actions nor\r\n * change the state value.\r\n *\r\n * @param event The event to test\r\n * @returns Whether the event will cause a transition\r\n */\n\n\n State.prototype.can = function (event) {\n var _a;\n\n if (IS_PRODUCTION) {\n warn(!!this.machine, \"state.can(...) used outside of a machine-created State object; this will always return false.\");\n }\n\n var transitionData = (_a = this.machine) === null || _a === void 0 ? void 0 : _a.getTransitionData(this, event);\n return !!(transitionData === null || transitionData === void 0 ? void 0 : transitionData.transitions.length) && // Check that at least one transition is not forbidden\n transitionData.transitions.some(function (t) {\n return t.target !== undefined || t.actions.length;\n });\n };\n\n return State;\n}();\n\nexport { State, bindActionToState, isState, isStateConfig, stateValuesEqual };\n","import { __assign } from './_virtual/_tslib.js';\n\nvar defaultOptions = {\n deferEvents: false\n};\n\nvar Scheduler =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n function Scheduler(options) {\n this.processingEvent = false;\n this.queue = [];\n this.initialized = false;\n this.options = __assign(__assign({}, defaultOptions), options);\n }\n\n Scheduler.prototype.initialize = function (callback) {\n this.initialized = true;\n\n if (callback) {\n if (!this.options.deferEvents) {\n this.schedule(callback);\n return;\n }\n\n this.process(callback);\n }\n\n this.flushEvents();\n };\n\n Scheduler.prototype.schedule = function (task) {\n if (!this.initialized || this.processingEvent) {\n this.queue.push(task);\n return;\n }\n\n if (this.queue.length !== 0) {\n throw new Error('Event queue should be empty when it is not processing events');\n }\n\n this.process(task);\n this.flushEvents();\n };\n\n Scheduler.prototype.clear = function () {\n this.queue = [];\n };\n\n Scheduler.prototype.flushEvents = function () {\n var nextCallback = this.queue.shift();\n\n while (nextCallback) {\n this.process(nextCallback);\n nextCallback = this.queue.shift();\n }\n };\n\n Scheduler.prototype.process = function (callback) {\n this.processingEvent = true;\n\n try {\n callback();\n } catch (e) {\n // there is no use to keep the future events\n // as the situation is not anymore the same\n this.clear();\n throw e;\n } finally {\n this.processingEvent = false;\n }\n };\n\n return Scheduler;\n}();\n\nexport { Scheduler };\n","var children = /*#__PURE__*/new Map();\nvar sessionIdIndex = 0;\nvar registry = {\n bookId: function () {\n return \"x:\".concat(sessionIdIndex++);\n },\n register: function (id, actor) {\n children.set(id, actor);\n return id;\n },\n get: function (id) {\n return children.get(id);\n },\n free: function (id) {\n children.delete(id);\n }\n};\n\nexport { registry };\n","import { IS_PRODUCTION } from './environment.js';\n\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n if (!IS_PRODUCTION) {\n console.warn('XState could not find a global object in this environment. Please let the maintainers know and raise an issue here: https://github.com/statelyai/xstate/issues');\n }\n}\n\nfunction getDevTools() {\n var global = getGlobal();\n\n if (global && '__xstate__' in global) {\n return global.__xstate__;\n }\n\n return undefined;\n}\n\nfunction registerService(service) {\n if (!getGlobal()) {\n return;\n }\n\n var devTools = getDevTools();\n\n if (devTools) {\n devTools.register(service);\n }\n}\n\nexport { getGlobal, registerService };\n","import { error, doneInvoke } from './actions.js';\nimport { toActorRef } from './Actor.js';\nimport { toObserver } from './utils.js';\n\n/**\r\n * Returns an actor behavior from a reducer and its initial state.\r\n *\r\n * @param transition The pure reducer that returns the next state given the current state and event.\r\n * @param initialState The initial state of the reducer.\r\n * @returns An actor behavior\r\n */\n\nfunction fromReducer(transition, initialState) {\n return {\n transition: transition,\n initialState: initialState\n };\n}\nfunction fromPromise(promiseFn) {\n var initialState = {\n error: undefined,\n data: undefined,\n status: 'pending'\n };\n return {\n transition: function (state, event, _a) {\n var parent = _a.parent,\n id = _a.id,\n observers = _a.observers;\n\n switch (event.type) {\n case 'fulfill':\n parent === null || parent === void 0 ? void 0 : parent.send(doneInvoke(id, event.data));\n return {\n error: undefined,\n data: event.data,\n status: 'fulfilled'\n };\n\n case 'reject':\n parent === null || parent === void 0 ? void 0 : parent.send(error(id, event.error));\n observers.forEach(function (observer) {\n observer.error(event.error);\n });\n return {\n error: event.error,\n data: undefined,\n status: 'rejected'\n };\n\n default:\n return state;\n }\n },\n initialState: initialState,\n start: function (_a) {\n var self = _a.self;\n promiseFn().then(function (data) {\n self.send({\n type: 'fulfill',\n data: data\n });\n }, function (reason) {\n self.send({\n type: 'reject',\n error: reason\n });\n });\n return initialState;\n }\n };\n}\nfunction spawnBehavior(behavior, options) {\n if (options === void 0) {\n options = {};\n }\n\n var state = behavior.initialState;\n var observers = new Set();\n var mailbox = [];\n var flushing = false;\n\n var flush = function () {\n if (flushing) {\n return;\n }\n\n flushing = true;\n\n while (mailbox.length > 0) {\n var event_1 = mailbox.shift();\n state = behavior.transition(state, event_1, actorCtx);\n observers.forEach(function (observer) {\n return observer.next(state);\n });\n }\n\n flushing = false;\n };\n\n var actor = toActorRef({\n id: options.id,\n send: function (event) {\n mailbox.push(event);\n flush();\n },\n getSnapshot: function () {\n return state;\n },\n subscribe: function (next, handleError, complete) {\n var observer = toObserver(next, handleError, complete);\n observers.add(observer);\n observer.next(state);\n return {\n unsubscribe: function () {\n observers.delete(observer);\n }\n };\n }\n });\n var actorCtx = {\n parent: options.parent,\n self: actor,\n id: options.id || 'anonymous',\n observers: observers\n };\n state = behavior.start ? behavior.start(actorCtx) : state;\n return actor;\n}\n\nexport { fromPromise, fromReducer, spawnBehavior };\n","import { __values, __spreadArray, __read, __assign } from './_virtual/_tslib.js';\nimport { SpecialTargets, ActionTypes } from './types.js';\nimport { isStateConfig, State, bindActionToState } from './State.js';\nimport { errorPlatform, update, error as error$1, log, stop, start, cancel, send, raise } from './actionTypes.js';\nimport { initEvent, doneInvoke, toActionObjects, resolveActions, error, getActionFunction } from './actions.js';\nimport { IS_PRODUCTION } from './environment.js';\nimport { warn, mapContext, toObserver, isFunction, toSCXMLEvent, flatten, isRaisableAction, isPromiseLike, isObservable, isMachine, isBehavior, reportUnhandledExceptionOnInvocation, symbolObservable, isArray, toEventObject, isString, isActor, toInvokeSource, uniqueId } from './utils.js';\nimport { Scheduler } from './scheduler.js';\nimport { createDeferredActor, isSpawnedActor } from './Actor.js';\nimport { registry } from './registry.js';\nimport { getGlobal, registerService } from './devTools.js';\nimport { provide, consume } from './serviceScope.js';\nimport { spawnBehavior } from './behaviors.js';\n\nvar DEFAULT_SPAWN_OPTIONS = {\n sync: false,\n autoForward: false\n};\nvar InterpreterStatus;\n\n(function (InterpreterStatus) {\n InterpreterStatus[InterpreterStatus[\"NotStarted\"] = 0] = \"NotStarted\";\n InterpreterStatus[InterpreterStatus[\"Running\"] = 1] = \"Running\";\n InterpreterStatus[InterpreterStatus[\"Stopped\"] = 2] = \"Stopped\";\n})(InterpreterStatus || (InterpreterStatus = {}));\n\nvar Interpreter =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n /**\r\n * Creates a new Interpreter instance (i.e., service) for the given machine with the provided options, if any.\r\n *\r\n * @param machine The machine to be interpreted\r\n * @param options Interpreter options\r\n */\n function Interpreter(machine, options) {\n if (options === void 0) {\n options = Interpreter.defaultOptions;\n }\n\n var _this = this;\n\n this.machine = machine;\n this.delayedEventsMap = {};\n this.listeners = new Set();\n this.contextListeners = new Set();\n this.stopListeners = new Set();\n this.doneListeners = new Set();\n this.eventListeners = new Set();\n this.sendListeners = new Set();\n /**\r\n * Whether the service is started.\r\n */\n\n this.initialized = false;\n this.status = InterpreterStatus.NotStarted;\n this.children = new Map();\n this.forwardTo = new Set();\n this._outgoingQueue = [];\n /**\r\n * Alias for Interpreter.prototype.start\r\n */\n\n this.init = this.start;\n /**\r\n * Sends an event to the running interpreter to trigger a transition.\r\n *\r\n * An array of events (batched) can be sent as well, which will send all\r\n * batched events to the running interpreter. The listeners will be\r\n * notified only **once** when all events are processed.\r\n *\r\n * @param event The event(s) to send\r\n */\n\n this.send = function (event, payload) {\n if (isArray(event)) {\n _this.batch(event);\n\n return _this.state;\n }\n\n var _event = toSCXMLEvent(toEventObject(event, payload));\n\n if (_this.status === InterpreterStatus.Stopped) {\n // do nothing\n if (!IS_PRODUCTION) {\n warn(false, \"Event \\\"\".concat(_event.name, \"\\\" was sent to stopped service \\\"\").concat(_this.machine.id, \"\\\". This service has already reached its final state, and will not transition.\\nEvent: \").concat(JSON.stringify(_event.data)));\n }\n\n return _this.state;\n }\n\n if (_this.status !== InterpreterStatus.Running && !_this.options.deferEvents) {\n throw new Error(\"Event \\\"\".concat(_event.name, \"\\\" was sent to uninitialized service \\\"\").concat(_this.machine.id // tslint:disable-next-line:max-line-length\n , \"\\\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\\nEvent: \").concat(JSON.stringify(_event.data)));\n }\n\n _this.scheduler.schedule(function () {\n // Forward copy of event to child actors\n _this.forward(_event);\n\n var nextState = _this._nextState(_event);\n\n _this.update(nextState, _event);\n });\n\n return _this._state; // TODO: deprecate (should return void)\n // tslint:disable-next-line:semicolon\n };\n\n this.sendTo = function (event, to, immediate) {\n var isParent = _this.parent && (to === SpecialTargets.Parent || _this.parent.id === to);\n var target = isParent ? _this.parent : isString(to) ? to === SpecialTargets.Internal ? _this : _this.children.get(to) || registry.get(to) : isActor(to) ? to : undefined;\n\n if (!target) {\n if (!isParent) {\n throw new Error(\"Unable to send event to child '\".concat(to, \"' from service '\").concat(_this.id, \"'.\"));\n } // tslint:disable-next-line:no-console\n\n\n if (!IS_PRODUCTION) {\n warn(false, \"Service '\".concat(_this.id, \"' has no parent: unable to send event \").concat(event.type));\n }\n\n return;\n }\n\n if ('machine' in target) {\n // perhaps those events should be rejected in the parent\n // but atm it doesn't have easy access to all of the information that is required to do it reliably\n if (_this.status !== InterpreterStatus.Stopped || _this.parent !== target || // we need to send events to the parent from exit handlers of a machine that reached its final state\n _this.state.done) {\n // Send SCXML events to machines\n var scxmlEvent = __assign(__assign({}, event), {\n name: event.name === error$1 ? \"\".concat(error(_this.id)) : event.name,\n origin: _this.sessionId\n });\n\n if (!immediate && _this.machine.config.predictableActionArguments) {\n _this._outgoingQueue.push([target, scxmlEvent]);\n } else {\n target.send(scxmlEvent);\n }\n }\n } else {\n // Send normal events to other targets\n if (!immediate && _this.machine.config.predictableActionArguments) {\n _this._outgoingQueue.push([target, event.data]);\n } else {\n target.send(event.data);\n }\n }\n };\n\n this._exec = function (action, context, _event, actionFunctionMap) {\n if (actionFunctionMap === void 0) {\n actionFunctionMap = _this.machine.options.actions;\n }\n\n var actionOrExec = action.exec || getActionFunction(action.type, actionFunctionMap);\n var exec = isFunction(actionOrExec) ? actionOrExec : actionOrExec ? actionOrExec.exec : action.exec;\n\n if (exec) {\n try {\n return exec(context, _event.data, !_this.machine.config.predictableActionArguments ? {\n action: action,\n state: _this.state,\n _event: _event\n } : {\n action: action,\n _event: _event\n });\n } catch (err) {\n if (_this.parent) {\n _this.parent.send({\n type: 'xstate.error',\n data: err\n });\n }\n\n throw err;\n }\n }\n\n switch (action.type) {\n case raise:\n {\n // if raise action reached the interpreter then it's a delayed one\n var sendAction_1 = action;\n\n _this.defer(sendAction_1);\n\n break;\n }\n\n case send:\n var sendAction = action;\n\n if (typeof sendAction.delay === 'number') {\n _this.defer(sendAction);\n\n return;\n } else {\n if (sendAction.to) {\n _this.sendTo(sendAction._event, sendAction.to, _event === initEvent);\n } else {\n _this.send(sendAction._event);\n }\n }\n\n break;\n\n case cancel:\n _this.cancel(action.sendId);\n\n break;\n\n case start:\n {\n if (_this.status !== InterpreterStatus.Running) {\n return;\n }\n\n var activity = action.activity; // If the activity will be stopped right after it's started\n // (such as in transient states)\n // don't bother starting the activity.\n\n if ( // in v4 with `predictableActionArguments` invokes are called eagerly when the `this.state` still points to the previous state\n !_this.machine.config.predictableActionArguments && !_this.state.activities[activity.id || activity.type]) {\n break;\n } // Invoked services\n\n\n if (activity.type === ActionTypes.Invoke) {\n var invokeSource = toInvokeSource(activity.src);\n var serviceCreator = _this.machine.options.services ? _this.machine.options.services[invokeSource.type] : undefined;\n var id = activity.id,\n data = activity.data;\n\n if (!IS_PRODUCTION) {\n warn(!('forward' in activity), // tslint:disable-next-line:max-line-length\n \"`forward` property is deprecated (found in invocation of '\".concat(activity.src, \"' in in machine '\").concat(_this.machine.id, \"'). \") + \"Please use `autoForward` instead.\");\n }\n\n var autoForward = 'autoForward' in activity ? activity.autoForward : !!activity.forward;\n\n if (!serviceCreator) {\n // tslint:disable-next-line:no-console\n if (!IS_PRODUCTION) {\n warn(false, \"No service found for invocation '\".concat(activity.src, \"' in machine '\").concat(_this.machine.id, \"'.\"));\n }\n\n return;\n }\n\n var resolvedData = data ? mapContext(data, context, _event) : undefined;\n\n if (typeof serviceCreator === 'string') {\n // TODO: warn\n return;\n }\n\n var source = isFunction(serviceCreator) ? serviceCreator(context, _event.data, {\n data: resolvedData,\n src: invokeSource,\n meta: activity.meta\n }) : serviceCreator;\n\n if (!source) {\n // TODO: warn?\n return;\n }\n\n var options = void 0;\n\n if (isMachine(source)) {\n source = resolvedData ? source.withContext(resolvedData) : source;\n options = {\n autoForward: autoForward\n };\n }\n\n _this.spawn(source, id, options);\n } else {\n _this.spawnActivity(activity);\n }\n\n break;\n }\n\n case stop:\n {\n _this.stopChild(action.activity.id);\n\n break;\n }\n\n case log:\n var _a = action,\n label = _a.label,\n value = _a.value;\n\n if (label) {\n _this.logger(label, value);\n } else {\n _this.logger(value);\n }\n\n break;\n\n default:\n if (!IS_PRODUCTION) {\n warn(false, \"No implementation found for action type '\".concat(action.type, \"'\"));\n }\n\n break;\n }\n };\n\n var resolvedOptions = __assign(__assign({}, Interpreter.defaultOptions), options);\n\n var clock = resolvedOptions.clock,\n logger = resolvedOptions.logger,\n parent = resolvedOptions.parent,\n id = resolvedOptions.id;\n var resolvedId = id !== undefined ? id : machine.id;\n this.id = resolvedId;\n this.logger = logger;\n this.clock = clock;\n this.parent = parent;\n this.options = resolvedOptions;\n this.scheduler = new Scheduler({\n deferEvents: this.options.deferEvents\n });\n this.sessionId = registry.bookId();\n }\n\n Object.defineProperty(Interpreter.prototype, \"initialState\", {\n get: function () {\n var _this = this;\n\n if (this._initialState) {\n return this._initialState;\n }\n\n return provide(this, function () {\n _this._initialState = _this.machine.initialState;\n return _this._initialState;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Interpreter.prototype, \"state\", {\n /**\r\n * @deprecated Use `.getSnapshot()` instead.\r\n */\n get: function () {\n if (!IS_PRODUCTION) {\n warn(this.status !== InterpreterStatus.NotStarted, \"Attempted to read state from uninitialized service '\".concat(this.id, \"'. Make sure the service is started first.\"));\n }\n\n return this._state;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Executes the actions of the given state, with that state's `context` and `event`.\r\n *\r\n * @param state The state whose actions will be executed\r\n * @param actionsConfig The action implementations to use\r\n */\n\n Interpreter.prototype.execute = function (state, actionsConfig) {\n var e_1, _a;\n\n try {\n for (var _b = __values(state.actions), _c = _b.next(); !_c.done; _c = _b.next()) {\n var action = _c.value;\n this.exec(action, state, actionsConfig);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n\n Interpreter.prototype.update = function (state, _event) {\n var e_2, _a, e_3, _b, e_4, _c, e_5, _d;\n\n var _this = this; // Attach session ID to state\n\n\n state._sessionid = this.sessionId; // Update state\n\n this._state = state; // Execute actions\n\n if ((!this.machine.config.predictableActionArguments || // this is currently required to execute initial actions as the `initialState` gets cached\n // we can't just recompute it (and execute actions while doing so) because we try to preserve identity of actors created within initial assigns\n _event === initEvent) && this.options.execute) {\n this.execute(this.state);\n } else {\n var item = void 0;\n\n while (item = this._outgoingQueue.shift()) {\n item[0].send(item[1]);\n }\n } // Update children\n\n\n this.children.forEach(function (child) {\n _this.state.children[child.id] = child;\n }); // Dev tools\n\n if (this.devTools) {\n this.devTools.send(_event.data, state);\n } // Execute listeners\n\n\n if (state.event) {\n try {\n for (var _e = __values(this.eventListeners), _f = _e.next(); !_f.done; _f = _e.next()) {\n var listener = _f.value;\n listener(state.event);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n\n try {\n for (var _g = __values(this.listeners), _h = _g.next(); !_h.done; _h = _g.next()) {\n var listener = _h.value;\n listener(state, state.event);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n try {\n for (var _j = __values(this.contextListeners), _k = _j.next(); !_k.done; _k = _j.next()) {\n var contextListener = _k.value;\n contextListener(this.state.context, this.state.history ? this.state.history.context : undefined);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (_k && !_k.done && (_c = _j.return)) _c.call(_j);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n if (this.state.done) {\n // get final child state node\n var finalChildStateNode = state.configuration.find(function (sn) {\n return sn.type === 'final' && sn.parent === _this.machine;\n });\n var doneData = finalChildStateNode && finalChildStateNode.doneData ? mapContext(finalChildStateNode.doneData, state.context, _event) : undefined;\n this._doneEvent = doneInvoke(this.id, doneData);\n\n try {\n for (var _l = __values(this.doneListeners), _m = _l.next(); !_m.done; _m = _l.next()) {\n var listener = _m.value;\n listener(this._doneEvent);\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_m && !_m.done && (_d = _l.return)) _d.call(_l);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n this._stop();\n\n this._stopChildren();\n\n registry.free(this.sessionId);\n }\n };\n /*\r\n * Adds a listener that is notified whenever a state transition happens. The listener is called with\r\n * the next state and the event object that caused the state transition.\r\n *\r\n * @param listener The state listener\r\n */\n\n\n Interpreter.prototype.onTransition = function (listener) {\n this.listeners.add(listener); // Send current state to listener\n\n if (this.status === InterpreterStatus.Running) {\n listener(this.state, this.state.event);\n }\n\n return this;\n };\n\n Interpreter.prototype.subscribe = function (nextListenerOrObserver, _, // TODO: error listener\n completeListener) {\n var _this = this;\n\n var observer = toObserver(nextListenerOrObserver, _, completeListener);\n this.listeners.add(observer.next); // Send current state to listener\n\n if (this.status !== InterpreterStatus.NotStarted) {\n observer.next(this.state);\n }\n\n var completeOnce = function () {\n _this.doneListeners.delete(completeOnce);\n\n _this.stopListeners.delete(completeOnce);\n\n observer.complete();\n };\n\n if (this.status === InterpreterStatus.Stopped) {\n observer.complete();\n } else {\n this.onDone(completeOnce);\n this.onStop(completeOnce);\n }\n\n return {\n unsubscribe: function () {\n _this.listeners.delete(observer.next);\n\n _this.doneListeners.delete(completeOnce);\n\n _this.stopListeners.delete(completeOnce);\n }\n };\n };\n /**\r\n * Adds an event listener that is notified whenever an event is sent to the running interpreter.\r\n * @param listener The event listener\r\n */\n\n\n Interpreter.prototype.onEvent = function (listener) {\n this.eventListeners.add(listener);\n return this;\n };\n /**\r\n * Adds an event listener that is notified whenever a `send` event occurs.\r\n * @param listener The event listener\r\n */\n\n\n Interpreter.prototype.onSend = function (listener) {\n this.sendListeners.add(listener);\n return this;\n };\n /**\r\n * Adds a context listener that is notified whenever the state context changes.\r\n * @param listener The context listener\r\n */\n\n\n Interpreter.prototype.onChange = function (listener) {\n this.contextListeners.add(listener);\n return this;\n };\n /**\r\n * Adds a listener that is notified when the machine is stopped.\r\n * @param listener The listener\r\n */\n\n\n Interpreter.prototype.onStop = function (listener) {\n this.stopListeners.add(listener);\n return this;\n };\n /**\r\n * Adds a state listener that is notified when the statechart has reached its final state.\r\n * @param listener The state listener\r\n */\n\n\n Interpreter.prototype.onDone = function (listener) {\n if (this.status === InterpreterStatus.Stopped && this._doneEvent) {\n listener(this._doneEvent);\n } else {\n this.doneListeners.add(listener);\n }\n\n return this;\n };\n /**\r\n * Removes a listener.\r\n * @param listener The listener to remove\r\n */\n\n\n Interpreter.prototype.off = function (listener) {\n this.listeners.delete(listener);\n this.eventListeners.delete(listener);\n this.sendListeners.delete(listener);\n this.stopListeners.delete(listener);\n this.doneListeners.delete(listener);\n this.contextListeners.delete(listener);\n return this;\n };\n /**\r\n * Starts the interpreter from the given state, or the initial state.\r\n * @param initialState The state to start the statechart from\r\n */\n\n\n Interpreter.prototype.start = function (initialState) {\n var _this = this;\n\n if (this.status === InterpreterStatus.Running) {\n // Do not restart the service if it is already started\n return this;\n } // yes, it's a hack but we need the related cache to be populated for some things to work (like delayed transitions)\n // this is usually called by `machine.getInitialState` but if we rehydrate from a state we might bypass this call\n // we also don't want to call this method here as it resolves the full initial state which might involve calling assign actions\n // and that could potentially lead to some unwanted side-effects (even such as creating some rogue actors)\n\n\n this.machine._init();\n\n registry.register(this.sessionId, this);\n this.initialized = true;\n this.status = InterpreterStatus.Running;\n var resolvedState = initialState === undefined ? this.initialState : provide(this, function () {\n return isStateConfig(initialState) ? _this.machine.resolveState(initialState) : _this.machine.resolveState(State.from(initialState, _this.machine.context));\n });\n\n if (this.options.devTools) {\n this.attachDev();\n }\n\n this.scheduler.initialize(function () {\n _this.update(resolvedState, initEvent);\n });\n return this;\n };\n\n Interpreter.prototype._stopChildren = function () {\n // TODO: think about converting those to actions\n this.children.forEach(function (child) {\n if (isFunction(child.stop)) {\n child.stop();\n }\n });\n this.children.clear();\n };\n\n Interpreter.prototype._stop = function () {\n var e_6, _a, e_7, _b, e_8, _c, e_9, _d, e_10, _e;\n\n try {\n for (var _f = __values(this.listeners), _g = _f.next(); !_g.done; _g = _f.next()) {\n var listener = _g.value;\n this.listeners.delete(listener);\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n\n try {\n for (var _h = __values(this.stopListeners), _j = _h.next(); !_j.done; _j = _h.next()) {\n var listener = _j.value; // call listener, then remove\n\n listener();\n this.stopListeners.delete(listener);\n }\n } catch (e_7_1) {\n e_7 = {\n error: e_7_1\n };\n } finally {\n try {\n if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n } finally {\n if (e_7) throw e_7.error;\n }\n }\n\n try {\n for (var _k = __values(this.contextListeners), _l = _k.next(); !_l.done; _l = _k.next()) {\n var listener = _l.value;\n this.contextListeners.delete(listener);\n }\n } catch (e_8_1) {\n e_8 = {\n error: e_8_1\n };\n } finally {\n try {\n if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n } finally {\n if (e_8) throw e_8.error;\n }\n }\n\n try {\n for (var _m = __values(this.doneListeners), _o = _m.next(); !_o.done; _o = _m.next()) {\n var listener = _o.value;\n this.doneListeners.delete(listener);\n }\n } catch (e_9_1) {\n e_9 = {\n error: e_9_1\n };\n } finally {\n try {\n if (_o && !_o.done && (_d = _m.return)) _d.call(_m);\n } finally {\n if (e_9) throw e_9.error;\n }\n }\n\n if (!this.initialized) {\n // Interpreter already stopped; do nothing\n return this;\n }\n\n this.initialized = false;\n this.status = InterpreterStatus.Stopped;\n this._initialState = undefined;\n\n try {\n // we are going to stop within the current sync frame\n // so we can safely just cancel this here as nothing async should be fired anyway\n for (var _p = __values(Object.keys(this.delayedEventsMap)), _q = _p.next(); !_q.done; _q = _p.next()) {\n var key = _q.value;\n this.clock.clearTimeout(this.delayedEventsMap[key]);\n }\n } catch (e_10_1) {\n e_10 = {\n error: e_10_1\n };\n } finally {\n try {\n if (_q && !_q.done && (_e = _p.return)) _e.call(_p);\n } finally {\n if (e_10) throw e_10.error;\n }\n } // clear everything that might be enqueued\n\n\n this.scheduler.clear();\n this.scheduler = new Scheduler({\n deferEvents: this.options.deferEvents\n });\n };\n /**\r\n * Stops the interpreter and unsubscribe all listeners.\r\n *\r\n * This will also notify the `onStop` listeners.\r\n */\n\n\n Interpreter.prototype.stop = function () {\n // TODO: add warning for stopping non-root interpreters\n var _this = this; // grab the current scheduler as it will be replaced in _stop\n\n\n var scheduler = this.scheduler;\n\n this._stop(); // let what is currently processed to be finished\n\n\n scheduler.schedule(function () {\n var _a;\n\n if ((_a = _this._state) === null || _a === void 0 ? void 0 : _a.done) {\n return;\n } // it feels weird to handle this here but we need to handle this even slightly \"out of band\"\n\n\n var _event = toSCXMLEvent({\n type: 'xstate.stop'\n });\n\n var nextState = provide(_this, function () {\n var exitActions = flatten(__spreadArray([], __read(_this.state.configuration), false).sort(function (a, b) {\n return b.order - a.order;\n }).map(function (stateNode) {\n return toActionObjects(stateNode.onExit, _this.machine.options.actions);\n }));\n\n var _a = __read(resolveActions(_this.machine, _this.state, _this.state.context, _event, [{\n type: 'exit',\n actions: exitActions\n }], _this.machine.config.predictableActionArguments ? _this._exec : undefined, _this.machine.config.predictableActionArguments || _this.machine.config.preserveActionOrder), 2),\n resolvedActions = _a[0],\n updatedContext = _a[1];\n\n var newState = new State({\n value: _this.state.value,\n context: updatedContext,\n _event: _event,\n _sessionid: _this.sessionId,\n historyValue: undefined,\n history: _this.state,\n actions: resolvedActions.filter(function (action) {\n return !isRaisableAction(action);\n }),\n activities: {},\n events: [],\n configuration: [],\n transitions: [],\n children: {},\n done: _this.state.done,\n tags: _this.state.tags,\n machine: _this.machine\n });\n newState.changed = true;\n return newState;\n });\n\n _this.update(nextState, _event);\n\n _this._stopChildren();\n\n registry.free(_this.sessionId);\n });\n return this;\n };\n\n Interpreter.prototype.batch = function (events) {\n var _this = this;\n\n if (this.status === InterpreterStatus.NotStarted && this.options.deferEvents) {\n // tslint:disable-next-line:no-console\n if (!IS_PRODUCTION) {\n warn(false, \"\".concat(events.length, \" event(s) were sent to uninitialized service \\\"\").concat(this.machine.id, \"\\\" and are deferred. Make sure .start() is called for this service.\\nEvent: \").concat(JSON.stringify(event)));\n }\n } else if (this.status !== InterpreterStatus.Running) {\n throw new Error( // tslint:disable-next-line:max-line-length\n \"\".concat(events.length, \" event(s) were sent to uninitialized service \\\"\").concat(this.machine.id, \"\\\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\"));\n }\n\n if (!events.length) {\n return;\n }\n\n var exec = !!this.machine.config.predictableActionArguments && this._exec;\n this.scheduler.schedule(function () {\n var e_11, _a;\n\n var nextState = _this.state;\n var batchChanged = false;\n var batchedActions = [];\n\n var _loop_1 = function (event_1) {\n var _event = toSCXMLEvent(event_1);\n\n _this.forward(_event);\n\n nextState = provide(_this, function () {\n return _this.machine.transition(nextState, _event, undefined, exec || undefined);\n });\n batchedActions.push.apply(batchedActions, __spreadArray([], __read(_this.machine.config.predictableActionArguments ? nextState.actions : nextState.actions.map(function (a) {\n return bindActionToState(a, nextState);\n })), false));\n batchChanged = batchChanged || !!nextState.changed;\n };\n\n try {\n for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {\n var event_1 = events_1_1.value;\n\n _loop_1(event_1);\n }\n } catch (e_11_1) {\n e_11 = {\n error: e_11_1\n };\n } finally {\n try {\n if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);\n } finally {\n if (e_11) throw e_11.error;\n }\n }\n\n nextState.changed = batchChanged;\n nextState.actions = batchedActions;\n\n _this.update(nextState, toSCXMLEvent(events[events.length - 1]));\n });\n };\n /**\r\n * Returns a send function bound to this interpreter instance.\r\n *\r\n * @param event The event to be sent by the sender.\r\n */\n\n\n Interpreter.prototype.sender = function (event) {\n return this.send.bind(this, event);\n };\n\n Interpreter.prototype._nextState = function (event, exec) {\n var _this = this;\n\n if (exec === void 0) {\n exec = !!this.machine.config.predictableActionArguments && this._exec;\n }\n\n var _event = toSCXMLEvent(event);\n\n if (_event.name.indexOf(errorPlatform) === 0 && !this.state.nextEvents.some(function (nextEvent) {\n return nextEvent.indexOf(errorPlatform) === 0;\n })) {\n throw _event.data.data;\n }\n\n var nextState = provide(this, function () {\n return _this.machine.transition(_this.state, _event, undefined, exec || undefined);\n });\n return nextState;\n };\n /**\r\n * Returns the next state given the interpreter's current state and the event.\r\n *\r\n * This is a pure method that does _not_ update the interpreter's state.\r\n *\r\n * @param event The event to determine the next state\r\n */\n\n\n Interpreter.prototype.nextState = function (event) {\n return this._nextState(event, false);\n };\n\n Interpreter.prototype.forward = function (event) {\n var e_12, _a;\n\n try {\n for (var _b = __values(this.forwardTo), _c = _b.next(); !_c.done; _c = _b.next()) {\n var id = _c.value;\n var child = this.children.get(id);\n\n if (!child) {\n throw new Error(\"Unable to forward event '\".concat(event, \"' from interpreter '\").concat(this.id, \"' to nonexistant child '\").concat(id, \"'.\"));\n }\n\n child.send(event);\n }\n } catch (e_12_1) {\n e_12 = {\n error: e_12_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_12) throw e_12.error;\n }\n }\n };\n\n Interpreter.prototype.defer = function (sendAction) {\n var _this = this;\n\n var timerId = this.clock.setTimeout(function () {\n if ('to' in sendAction && sendAction.to) {\n _this.sendTo(sendAction._event, sendAction.to, true);\n } else {\n _this.send(sendAction._event);\n }\n }, sendAction.delay);\n\n if (sendAction.id) {\n this.delayedEventsMap[sendAction.id] = timerId;\n }\n };\n\n Interpreter.prototype.cancel = function (sendId) {\n this.clock.clearTimeout(this.delayedEventsMap[sendId]);\n delete this.delayedEventsMap[sendId];\n };\n\n Interpreter.prototype.exec = function (action, state, actionFunctionMap) {\n if (actionFunctionMap === void 0) {\n actionFunctionMap = this.machine.options.actions;\n }\n\n this._exec(action, state.context, state._event, actionFunctionMap);\n };\n\n Interpreter.prototype.removeChild = function (childId) {\n var _a;\n\n this.children.delete(childId);\n this.forwardTo.delete(childId); // this.state might not exist at the time this is called,\n // such as when a child is added then removed while initializing the state\n\n (_a = this.state) === null || _a === void 0 ? true : delete _a.children[childId];\n };\n\n Interpreter.prototype.stopChild = function (childId) {\n var child = this.children.get(childId);\n\n if (!child) {\n return;\n }\n\n this.removeChild(childId);\n\n if (isFunction(child.stop)) {\n child.stop();\n }\n };\n\n Interpreter.prototype.spawn = function (entity, name, options) {\n if (this.status !== InterpreterStatus.Running) {\n return createDeferredActor(entity, name);\n }\n\n if (isPromiseLike(entity)) {\n return this.spawnPromise(Promise.resolve(entity), name);\n } else if (isFunction(entity)) {\n return this.spawnCallback(entity, name);\n } else if (isSpawnedActor(entity)) {\n return this.spawnActor(entity, name);\n } else if (isObservable(entity)) {\n return this.spawnObservable(entity, name);\n } else if (isMachine(entity)) {\n return this.spawnMachine(entity, __assign(__assign({}, options), {\n id: name\n }));\n } else if (isBehavior(entity)) {\n return this.spawnBehavior(entity, name);\n } else {\n throw new Error(\"Unable to spawn entity \\\"\".concat(name, \"\\\" of type \\\"\").concat(typeof entity, \"\\\".\"));\n }\n };\n\n Interpreter.prototype.spawnMachine = function (machine, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var childService = new Interpreter(machine, __assign(__assign({}, this.options), {\n parent: this,\n id: options.id || machine.id\n }));\n\n var resolvedOptions = __assign(__assign({}, DEFAULT_SPAWN_OPTIONS), options);\n\n if (resolvedOptions.sync) {\n childService.onTransition(function (state) {\n _this.send(update, {\n state: state,\n id: childService.id\n });\n });\n }\n\n var actor = childService;\n this.children.set(childService.id, actor);\n\n if (resolvedOptions.autoForward) {\n this.forwardTo.add(childService.id);\n }\n\n childService.onDone(function (doneEvent) {\n _this.removeChild(childService.id);\n\n _this.send(toSCXMLEvent(doneEvent, {\n origin: childService.id\n }));\n }).start();\n return actor;\n };\n\n Interpreter.prototype.spawnBehavior = function (behavior, id) {\n var actorRef = spawnBehavior(behavior, {\n id: id,\n parent: this\n });\n this.children.set(id, actorRef);\n return actorRef;\n };\n\n Interpreter.prototype.spawnPromise = function (promise, id) {\n var _a;\n\n var _this = this;\n\n var canceled = false;\n var resolvedData;\n promise.then(function (response) {\n if (!canceled) {\n resolvedData = response;\n\n _this.removeChild(id);\n\n _this.send(toSCXMLEvent(doneInvoke(id, response), {\n origin: id\n }));\n }\n }, function (errorData) {\n if (!canceled) {\n _this.removeChild(id);\n\n var errorEvent = error(id, errorData);\n\n try {\n // Send \"error.platform.id\" to this (parent).\n _this.send(toSCXMLEvent(errorEvent, {\n origin: id\n }));\n } catch (error) {\n reportUnhandledExceptionOnInvocation(errorData, error, id);\n\n if (_this.devTools) {\n _this.devTools.send(errorEvent, _this.state);\n }\n\n if (_this.machine.strict) {\n // it would be better to always stop the state machine if unhandled\n // exception/promise rejection happens but because we don't want to\n // break existing code so enforce it on strict mode only especially so\n // because documentation says that onError is optional\n _this.stop();\n }\n }\n }\n });\n var actor = (_a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function (next, handleError, complete) {\n var observer = toObserver(next, handleError, complete);\n var unsubscribed = false;\n promise.then(function (response) {\n if (unsubscribed) {\n return;\n }\n\n observer.next(response);\n\n if (unsubscribed) {\n return;\n }\n\n observer.complete();\n }, function (err) {\n if (unsubscribed) {\n return;\n }\n\n observer.error(err);\n });\n return {\n unsubscribe: function () {\n return unsubscribed = true;\n }\n };\n },\n stop: function () {\n canceled = true;\n },\n toJSON: function () {\n return {\n id: id\n };\n },\n getSnapshot: function () {\n return resolvedData;\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a);\n this.children.set(id, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnCallback = function (callback, id) {\n var _a;\n\n var _this = this;\n\n var canceled = false;\n var receivers = new Set();\n var listeners = new Set();\n var emitted;\n\n var receive = function (e) {\n emitted = e;\n listeners.forEach(function (listener) {\n return listener(e);\n });\n\n if (canceled) {\n return;\n }\n\n _this.send(toSCXMLEvent(e, {\n origin: id\n }));\n };\n\n var callbackStop;\n\n try {\n callbackStop = callback(receive, function (newListener) {\n receivers.add(newListener);\n });\n } catch (err) {\n this.send(error(id, err));\n }\n\n if (isPromiseLike(callbackStop)) {\n // it turned out to be an async function, can't reliably check this before calling `callback`\n // because transpiled async functions are not recognizable\n return this.spawnPromise(callbackStop, id);\n }\n\n var actor = (_a = {\n id: id,\n send: function (event) {\n return receivers.forEach(function (receiver) {\n return receiver(event);\n });\n },\n subscribe: function (next) {\n var observer = toObserver(next);\n listeners.add(observer.next);\n return {\n unsubscribe: function () {\n listeners.delete(observer.next);\n }\n };\n },\n stop: function () {\n canceled = true;\n\n if (isFunction(callbackStop)) {\n callbackStop();\n }\n },\n toJSON: function () {\n return {\n id: id\n };\n },\n getSnapshot: function () {\n return emitted;\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a);\n this.children.set(id, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnObservable = function (source, id) {\n var _a;\n\n var _this = this;\n\n var emitted;\n var subscription = source.subscribe(function (value) {\n emitted = value;\n\n _this.send(toSCXMLEvent(value, {\n origin: id\n }));\n }, function (err) {\n _this.removeChild(id);\n\n _this.send(toSCXMLEvent(error(id, err), {\n origin: id\n }));\n }, function () {\n _this.removeChild(id);\n\n _this.send(toSCXMLEvent(doneInvoke(id), {\n origin: id\n }));\n });\n var actor = (_a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function (next, handleError, complete) {\n return source.subscribe(next, handleError, complete);\n },\n stop: function () {\n return subscription.unsubscribe();\n },\n getSnapshot: function () {\n return emitted;\n },\n toJSON: function () {\n return {\n id: id\n };\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a);\n this.children.set(id, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnActor = function (actor, name) {\n this.children.set(name, actor);\n return actor;\n };\n\n Interpreter.prototype.spawnActivity = function (activity) {\n var implementation = this.machine.options && this.machine.options.activities ? this.machine.options.activities[activity.type] : undefined;\n\n if (!implementation) {\n if (!IS_PRODUCTION) {\n warn(false, \"No implementation found for activity '\".concat(activity.type, \"'\"));\n } // tslint:disable-next-line:no-console\n\n\n return;\n } // Start implementation\n\n\n var dispose = implementation(this.state.context, activity);\n this.spawnEffect(activity.id, dispose);\n };\n\n Interpreter.prototype.spawnEffect = function (id, dispose) {\n var _a;\n\n this.children.set(id, (_a = {\n id: id,\n send: function () {\n return void 0;\n },\n subscribe: function () {\n return {\n unsubscribe: function () {\n return void 0;\n }\n };\n },\n stop: dispose || undefined,\n getSnapshot: function () {\n return undefined;\n },\n toJSON: function () {\n return {\n id: id\n };\n }\n }, _a[symbolObservable] = function () {\n return this;\n }, _a));\n };\n\n Interpreter.prototype.attachDev = function () {\n var global = getGlobal();\n\n if (this.options.devTools && global) {\n if (global.__REDUX_DEVTOOLS_EXTENSION__) {\n var devToolsOptions = typeof this.options.devTools === 'object' ? this.options.devTools : undefined;\n this.devTools = global.__REDUX_DEVTOOLS_EXTENSION__.connect(__assign(__assign({\n name: this.id,\n autoPause: true,\n stateSanitizer: function (state) {\n return {\n value: state.value,\n context: state.context,\n actions: state.actions\n };\n }\n }, devToolsOptions), {\n features: __assign({\n jump: false,\n skip: false\n }, devToolsOptions ? devToolsOptions.features : undefined)\n }), this.machine);\n this.devTools.init(this.state);\n } // add XState-specific dev tooling hook\n\n\n registerService(this);\n }\n };\n\n Interpreter.prototype.toJSON = function () {\n return {\n id: this.id\n };\n };\n\n Interpreter.prototype[symbolObservable] = function () {\n return this;\n };\n\n Interpreter.prototype.getSnapshot = function () {\n if (this.status === InterpreterStatus.NotStarted) {\n return this.initialState;\n }\n\n return this._state;\n };\n /**\r\n * The default interpreter options:\r\n *\r\n * - `clock` uses the global `setTimeout` and `clearTimeout` functions\r\n * - `logger` uses the global `console.log()` method\r\n */\n\n\n Interpreter.defaultOptions = {\n execute: true,\n deferEvents: true,\n clock: {\n setTimeout: function (fn, ms) {\n return setTimeout(fn, ms);\n },\n clearTimeout: function (id) {\n return clearTimeout(id);\n }\n },\n logger: /*#__PURE__*/console.log.bind(console),\n devTools: false\n };\n Interpreter.interpret = interpret;\n return Interpreter;\n}();\n\nvar resolveSpawnOptions = function (nameOrOptions) {\n if (isString(nameOrOptions)) {\n return __assign(__assign({}, DEFAULT_SPAWN_OPTIONS), {\n name: nameOrOptions\n });\n }\n\n return __assign(__assign(__assign({}, DEFAULT_SPAWN_OPTIONS), {\n name: uniqueId()\n }), nameOrOptions);\n};\n\nfunction spawn(entity, nameOrOptions) {\n var resolvedOptions = resolveSpawnOptions(nameOrOptions);\n return consume(function (service) {\n if (!IS_PRODUCTION) {\n var isLazyEntity = isMachine(entity) || isFunction(entity);\n warn(!!service || isLazyEntity, \"Attempted to spawn an Actor (ID: \\\"\".concat(isMachine(entity) ? entity.id : 'undefined', \"\\\") outside of a service. This will have no effect.\"));\n }\n\n if (service) {\n return service.spawn(entity, resolvedOptions.name, resolvedOptions);\n } else {\n return createDeferredActor(entity, resolvedOptions.name);\n }\n });\n}\n/**\r\n * Creates a new Interpreter instance for the given machine with the provided options, if any.\r\n *\r\n * @param machine The machine to interpret\r\n * @param options Interpreter options\r\n */\n\nfunction interpret(machine, options) {\n var interpreter = new Interpreter(machine, options);\n return interpreter;\n}\n\nexport { Interpreter, InterpreterStatus, interpret, spawn };\n","import { __assign, __rest } from './_virtual/_tslib.js';\nimport './types.js';\nimport { invoke } from './actionTypes.js';\nimport './utils.js';\nimport './environment.js';\n\nfunction toInvokeSource(src) {\n if (typeof src === 'string') {\n var simpleSrc = {\n type: src\n };\n\n simpleSrc.toString = function () {\n return src;\n }; // v4 compat - TODO: remove in v5\n\n\n return simpleSrc;\n }\n\n return src;\n}\nfunction toInvokeDefinition(invokeConfig) {\n return __assign(__assign({\n type: invoke\n }, invokeConfig), {\n toJSON: function () {\n invokeConfig.onDone;\n invokeConfig.onError;\n var invokeDef = __rest(invokeConfig, [\"onDone\", \"onError\"]);\n\n return __assign(__assign({}, invokeDef), {\n type: invoke,\n src: toInvokeSource(invokeConfig.src)\n });\n }\n });\n}\n\nexport { toInvokeDefinition, toInvokeSource };\n","import { __assign, __spreadArray, __read, __values, __rest } from './_virtual/_tslib.js';\nimport { isFunction, mapValues, isArray, flatten, toArray, toStateValue, isString, getEventType, toSCXMLEvent, matchesState, path, evaluateGuard, mapContext, isRaisableAction, pathToStateValue, isBuiltInEvent, partition, updateHistoryValue, toStatePath, mapFilterValues, warn, toStatePaths, nestedPath, normalizeTarget, toGuard, toTransitionConfigArray, isMachine, createInvokeId } from './utils.js';\nimport { State, stateValuesEqual } from './State.js';\nimport { start as start$1, stop as stop$1, invoke, update, nullEvent } from './actionTypes.js';\nimport { done, start, toActionObjects, raise, stop, resolveActions, doneInvoke, error, toActionObject, toActivityDefinition, after, send, cancel, initEvent } from './actions.js';\nimport { IS_PRODUCTION } from './environment.js';\nimport { STATE_DELIMITER } from './constants.js';\nimport { getAllStateNodes, getConfiguration, isInFinalState, getTagsFromConfiguration, has, getChildren, getValue, isLeafNode, getAllChildren } from './stateUtils.js';\nimport { createInvocableActor } from './Actor.js';\nimport { toInvokeDefinition } from './invokeUtils.js';\n\nvar NULL_EVENT = '';\nvar STATE_IDENTIFIER = '#';\nvar WILDCARD = '*';\nvar EMPTY_OBJECT = {};\n\nvar isStateId = function (str) {\n return str[0] === STATE_IDENTIFIER;\n};\n\nvar createDefaultOptions = function () {\n return {\n actions: {},\n guards: {},\n services: {},\n activities: {},\n delays: {}\n };\n};\n\nvar validateArrayifiedTransitions = function (stateNode, event, transitions) {\n var hasNonLastUnguardedTarget = transitions.slice(0, -1).some(function (transition) {\n return !('cond' in transition) && !('in' in transition) && (isString(transition.target) || isMachine(transition.target));\n });\n var eventText = event === NULL_EVENT ? 'the transient event' : \"event '\".concat(event, \"'\");\n warn(!hasNonLastUnguardedTarget, \"One or more transitions for \".concat(eventText, \" on state '\").concat(stateNode.id, \"' are unreachable. \") + \"Make sure that the default transition is the last one defined.\");\n};\n\nvar StateNode =\n/*#__PURE__*/\n\n/** @class */\nfunction () {\n function StateNode(\n /**\r\n * The raw config used to create the machine.\r\n */\n config, options,\n /**\r\n * The initial extended state\r\n */\n _context, // TODO: this is unsafe, but we're removing it in v5 anyway\n _stateInfo) {\n if (_context === void 0) {\n _context = 'context' in config ? config.context : undefined;\n }\n\n var _this = this;\n\n var _a;\n\n this.config = config;\n this._context = _context;\n /**\r\n * The order this state node appears. Corresponds to the implicit SCXML document order.\r\n */\n\n this.order = -1;\n this.__xstatenode = true;\n this.__cache = {\n events: undefined,\n relativeValue: new Map(),\n initialStateValue: undefined,\n initialState: undefined,\n on: undefined,\n transitions: undefined,\n candidates: {},\n delayedTransitions: undefined\n };\n this.idMap = {};\n this.tags = [];\n this.options = Object.assign(createDefaultOptions(), options);\n this.parent = _stateInfo === null || _stateInfo === void 0 ? void 0 : _stateInfo.parent;\n this.key = this.config.key || (_stateInfo === null || _stateInfo === void 0 ? void 0 : _stateInfo.key) || this.config.id || '(machine)';\n this.machine = this.parent ? this.parent.machine : this;\n this.path = this.parent ? this.parent.path.concat(this.key) : [];\n this.delimiter = this.config.delimiter || (this.parent ? this.parent.delimiter : STATE_DELIMITER);\n this.id = this.config.id || __spreadArray([this.machine.key], __read(this.path), false).join(this.delimiter);\n this.version = this.parent ? this.parent.version : this.config.version;\n this.type = this.config.type || (this.config.parallel ? 'parallel' : this.config.states && Object.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');\n this.schema = this.parent ? this.machine.schema : (_a = this.config.schema) !== null && _a !== void 0 ? _a : {};\n this.description = this.config.description;\n\n if (!IS_PRODUCTION) {\n warn(!('parallel' in this.config), \"The \\\"parallel\\\" property is deprecated and will be removed in version 4.1. \".concat(this.config.parallel ? \"Replace with `type: 'parallel'`\" : \"Use `type: '\".concat(this.type, \"'`\"), \" in the config for state node '\").concat(this.id, \"' instead.\"));\n }\n\n this.initial = this.config.initial;\n this.states = this.config.states ? mapValues(this.config.states, function (stateConfig, key) {\n var _a;\n\n var stateNode = new StateNode(stateConfig, {}, undefined, {\n parent: _this,\n key: key\n });\n Object.assign(_this.idMap, __assign((_a = {}, _a[stateNode.id] = stateNode, _a), stateNode.idMap));\n return stateNode;\n }) : EMPTY_OBJECT; // Document order\n\n var order = 0;\n\n function dfs(stateNode) {\n var e_1, _a;\n\n stateNode.order = order++;\n\n try {\n for (var _b = __values(getAllChildren(stateNode)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n dfs(child);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n\n dfs(this); // History config\n\n this.history = this.config.history === true ? 'shallow' : this.config.history || false;\n this._transient = !!this.config.always || (!this.config.on ? false : Array.isArray(this.config.on) ? this.config.on.some(function (_a) {\n var event = _a.event;\n return event === NULL_EVENT;\n }) : NULL_EVENT in this.config.on);\n this.strict = !!this.config.strict; // TODO: deprecate (entry)\n\n this.onEntry = toArray(this.config.entry || this.config.onEntry).map(function (action) {\n return toActionObject(action);\n }); // TODO: deprecate (exit)\n\n this.onExit = toArray(this.config.exit || this.config.onExit).map(function (action) {\n return toActionObject(action);\n });\n this.meta = this.config.meta;\n this.doneData = this.type === 'final' ? this.config.data : undefined;\n this.invoke = toArray(this.config.invoke).map(function (invokeConfig, i) {\n var _a, _b;\n\n if (isMachine(invokeConfig)) {\n var invokeId = createInvokeId(_this.id, i);\n _this.machine.options.services = __assign((_a = {}, _a[invokeId] = invokeConfig, _a), _this.machine.options.services);\n return toInvokeDefinition({\n src: invokeId,\n id: invokeId\n });\n } else if (isString(invokeConfig.src)) {\n var invokeId = invokeConfig.id || createInvokeId(_this.id, i);\n return toInvokeDefinition(__assign(__assign({}, invokeConfig), {\n id: invokeId,\n src: invokeConfig.src\n }));\n } else if (isMachine(invokeConfig.src) || isFunction(invokeConfig.src)) {\n var invokeId = invokeConfig.id || createInvokeId(_this.id, i);\n _this.machine.options.services = __assign((_b = {}, _b[invokeId] = invokeConfig.src, _b), _this.machine.options.services);\n return toInvokeDefinition(__assign(__assign({\n id: invokeId\n }, invokeConfig), {\n src: invokeId\n }));\n } else {\n var invokeSource = invokeConfig.src;\n return toInvokeDefinition(__assign(__assign({\n id: createInvokeId(_this.id, i)\n }, invokeConfig), {\n src: invokeSource\n }));\n }\n });\n this.activities = toArray(this.config.activities).concat(this.invoke).map(function (activity) {\n return toActivityDefinition(activity);\n });\n this.transition = this.transition.bind(this);\n this.tags = toArray(this.config.tags); // TODO: this is the real fix for initialization once\n // state node getters are deprecated\n // if (!this.parent) {\n // this._init();\n // }\n }\n\n StateNode.prototype._init = function () {\n if (this.__cache.transitions) {\n return;\n }\n\n getAllStateNodes(this).forEach(function (stateNode) {\n return stateNode.on;\n });\n };\n /**\r\n * Clones this state machine with custom options and context.\r\n *\r\n * @param options Options (actions, guards, activities, services) to recursively merge with the existing options.\r\n * @param context Custom context (will override predefined context)\r\n */\n\n\n StateNode.prototype.withConfig = function (options, context) {\n var _a = this.options,\n actions = _a.actions,\n activities = _a.activities,\n guards = _a.guards,\n services = _a.services,\n delays = _a.delays;\n return new StateNode(this.config, {\n actions: __assign(__assign({}, actions), options.actions),\n activities: __assign(__assign({}, activities), options.activities),\n guards: __assign(__assign({}, guards), options.guards),\n services: __assign(__assign({}, services), options.services),\n delays: __assign(__assign({}, delays), options.delays)\n }, context !== null && context !== void 0 ? context : this.context);\n };\n /**\r\n * Clones this state machine with custom context.\r\n *\r\n * @param context Custom context (will override predefined context, not recursive)\r\n */\n\n\n StateNode.prototype.withContext = function (context) {\n return new StateNode(this.config, this.options, context);\n };\n\n Object.defineProperty(StateNode.prototype, \"context\", {\n get: function () {\n return isFunction(this._context) ? this._context() : this._context;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"definition\", {\n /**\r\n * The well-structured state node definition.\r\n */\n get: function () {\n return {\n id: this.id,\n key: this.key,\n version: this.version,\n context: this.context,\n type: this.type,\n initial: this.initial,\n history: this.history,\n states: mapValues(this.states, function (state) {\n return state.definition;\n }),\n on: this.on,\n transitions: this.transitions,\n entry: this.onEntry,\n exit: this.onExit,\n activities: this.activities || [],\n meta: this.meta,\n order: this.order || -1,\n data: this.doneData,\n invoke: this.invoke,\n description: this.description,\n tags: this.tags\n };\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.toJSON = function () {\n return this.definition;\n };\n\n Object.defineProperty(StateNode.prototype, \"on\", {\n /**\r\n * The mapping of events to transitions.\r\n */\n get: function () {\n if (this.__cache.on) {\n return this.__cache.on;\n }\n\n var transitions = this.transitions;\n return this.__cache.on = transitions.reduce(function (map, transition) {\n map[transition.eventType] = map[transition.eventType] || [];\n map[transition.eventType].push(transition);\n return map;\n }, {});\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"after\", {\n get: function () {\n return this.__cache.delayedTransitions || (this.__cache.delayedTransitions = this.getDelayedTransitions(), this.__cache.delayedTransitions);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"transitions\", {\n /**\r\n * All the transitions that can be taken from this state node.\r\n */\n get: function () {\n return this.__cache.transitions || (this.__cache.transitions = this.formatTransitions(), this.__cache.transitions);\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.getCandidates = function (eventName) {\n if (this.__cache.candidates[eventName]) {\n return this.__cache.candidates[eventName];\n }\n\n var transient = eventName === NULL_EVENT;\n var candidates = this.transitions.filter(function (transition) {\n var sameEventType = transition.eventType === eventName; // null events should only match against eventless transitions\n\n return transient ? sameEventType : sameEventType || transition.eventType === WILDCARD;\n });\n this.__cache.candidates[eventName] = candidates;\n return candidates;\n };\n /**\r\n * All delayed transitions from the config.\r\n */\n\n\n StateNode.prototype.getDelayedTransitions = function () {\n var _this = this;\n\n var afterConfig = this.config.after;\n\n if (!afterConfig) {\n return [];\n }\n\n var mutateEntryExit = function (delay, i) {\n var delayRef = isFunction(delay) ? \"\".concat(_this.id, \":delay[\").concat(i, \"]\") : delay;\n var eventType = after(delayRef, _this.id);\n\n _this.onEntry.push(send(eventType, {\n delay: delay\n }));\n\n _this.onExit.push(cancel(eventType));\n\n return eventType;\n };\n\n var delayedTransitions = isArray(afterConfig) ? afterConfig.map(function (transition, i) {\n var eventType = mutateEntryExit(transition.delay, i);\n return __assign(__assign({}, transition), {\n event: eventType\n });\n }) : flatten(Object.keys(afterConfig).map(function (delay, i) {\n var configTransition = afterConfig[delay];\n var resolvedTransition = isString(configTransition) ? {\n target: configTransition\n } : configTransition;\n var resolvedDelay = !isNaN(+delay) ? +delay : delay;\n var eventType = mutateEntryExit(resolvedDelay, i);\n return toArray(resolvedTransition).map(function (transition) {\n return __assign(__assign({}, transition), {\n event: eventType,\n delay: resolvedDelay\n });\n });\n }));\n return delayedTransitions.map(function (delayedTransition) {\n var delay = delayedTransition.delay;\n return __assign(__assign({}, _this.formatTransition(delayedTransition)), {\n delay: delay\n });\n });\n };\n /**\r\n * Returns the state nodes represented by the current state value.\r\n *\r\n * @param state The state value or State instance\r\n */\n\n\n StateNode.prototype.getStateNodes = function (state) {\n var _a;\n\n var _this = this;\n\n if (!state) {\n return [];\n }\n\n var stateValue = state instanceof State ? state.value : toStateValue(state, this.delimiter);\n\n if (isString(stateValue)) {\n var initialStateValue = this.getStateNode(stateValue).initial;\n return initialStateValue !== undefined ? this.getStateNodes((_a = {}, _a[stateValue] = initialStateValue, _a)) : [this, this.states[stateValue]];\n }\n\n var subStateKeys = Object.keys(stateValue);\n var subStateNodes = [this];\n subStateNodes.push.apply(subStateNodes, __spreadArray([], __read(flatten(subStateKeys.map(function (subStateKey) {\n return _this.getStateNode(subStateKey).getStateNodes(stateValue[subStateKey]);\n }))), false));\n return subStateNodes;\n };\n /**\r\n * Returns `true` if this state node explicitly handles the given event.\r\n *\r\n * @param event The event in question\r\n */\n\n\n StateNode.prototype.handles = function (event) {\n var eventType = getEventType(event);\n return this.events.includes(eventType);\n };\n /**\r\n * Resolves the given `state` to a new `State` instance relative to this machine.\r\n *\r\n * This ensures that `.events` and `.nextEvents` represent the correct values.\r\n *\r\n * @param state The state to resolve\r\n */\n\n\n StateNode.prototype.resolveState = function (state) {\n var stateFromConfig = state instanceof State ? state : State.create(state);\n var configuration = Array.from(getConfiguration([], this.getStateNodes(stateFromConfig.value)));\n return new State(__assign(__assign({}, stateFromConfig), {\n value: this.resolve(stateFromConfig.value),\n configuration: configuration,\n done: isInFinalState(configuration, this),\n tags: getTagsFromConfiguration(configuration),\n machine: this.machine\n }));\n };\n\n StateNode.prototype.transitionLeafNode = function (stateValue, state, _event) {\n var stateNode = this.getStateNode(stateValue);\n var next = stateNode.next(state, _event);\n\n if (!next || !next.transitions.length) {\n return this.next(state, _event);\n }\n\n return next;\n };\n\n StateNode.prototype.transitionCompoundNode = function (stateValue, state, _event) {\n var subStateKeys = Object.keys(stateValue);\n var stateNode = this.getStateNode(subStateKeys[0]);\n\n var next = stateNode._transition(stateValue[subStateKeys[0]], state, _event);\n\n if (!next || !next.transitions.length) {\n return this.next(state, _event);\n }\n\n return next;\n };\n\n StateNode.prototype.transitionParallelNode = function (stateValue, state, _event) {\n var e_2, _a;\n\n var transitionMap = {};\n\n try {\n for (var _b = __values(Object.keys(stateValue)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var subStateKey = _c.value;\n var subStateValue = stateValue[subStateKey];\n\n if (!subStateValue) {\n continue;\n }\n\n var subStateNode = this.getStateNode(subStateKey);\n\n var next = subStateNode._transition(subStateValue, state, _event);\n\n if (next) {\n transitionMap[subStateKey] = next;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n var stateTransitions = Object.keys(transitionMap).map(function (key) {\n return transitionMap[key];\n });\n var enabledTransitions = flatten(stateTransitions.map(function (st) {\n return st.transitions;\n }));\n var willTransition = stateTransitions.some(function (st) {\n return st.transitions.length > 0;\n });\n\n if (!willTransition) {\n return this.next(state, _event);\n }\n\n var configuration = flatten(Object.keys(transitionMap).map(function (key) {\n return transitionMap[key].configuration;\n }));\n return {\n transitions: enabledTransitions,\n exitSet: flatten(stateTransitions.map(function (t) {\n return t.exitSet;\n })),\n configuration: configuration,\n source: state,\n actions: flatten(Object.keys(transitionMap).map(function (key) {\n return transitionMap[key].actions;\n }))\n };\n };\n\n StateNode.prototype._transition = function (stateValue, state, _event) {\n // leaf node\n if (isString(stateValue)) {\n return this.transitionLeafNode(stateValue, state, _event);\n } // hierarchical node\n\n\n if (Object.keys(stateValue).length === 1) {\n return this.transitionCompoundNode(stateValue, state, _event);\n } // orthogonal node\n\n\n return this.transitionParallelNode(stateValue, state, _event);\n };\n\n StateNode.prototype.getTransitionData = function (state, event) {\n return this._transition(state.value, state, toSCXMLEvent(event));\n };\n\n StateNode.prototype.next = function (state, _event) {\n var e_3, _a;\n\n var _this = this;\n\n var eventName = _event.name;\n var actions = [];\n var nextStateNodes = [];\n var selectedTransition;\n\n try {\n for (var _b = __values(this.getCandidates(eventName)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var candidate = _c.value;\n var cond = candidate.cond,\n stateIn = candidate.in;\n var resolvedContext = state.context;\n var isInState = stateIn ? isString(stateIn) && isStateId(stateIn) ? // Check if in state by ID\n state.matches(toStateValue(this.getStateNodeById(stateIn).path, this.delimiter)) : // Check if in state by relative grandparent\n matchesState(toStateValue(stateIn, this.delimiter), path(this.path.slice(0, -2))(state.value)) : true;\n var guardPassed = false;\n\n try {\n guardPassed = !cond || evaluateGuard(this.machine, cond, resolvedContext, _event, state);\n } catch (err) {\n throw new Error(\"Unable to evaluate guard '\".concat(cond.name || cond.type, \"' in transition for event '\").concat(eventName, \"' in state node '\").concat(this.id, \"':\\n\").concat(err.message));\n }\n\n if (guardPassed && isInState) {\n if (candidate.target !== undefined) {\n nextStateNodes = candidate.target;\n }\n\n actions.push.apply(actions, __spreadArray([], __read(candidate.actions), false));\n selectedTransition = candidate;\n break;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n if (!selectedTransition) {\n return undefined;\n }\n\n if (!nextStateNodes.length) {\n return {\n transitions: [selectedTransition],\n exitSet: [],\n configuration: state.value ? [this] : [],\n source: state,\n actions: actions\n };\n }\n\n var allNextStateNodes = flatten(nextStateNodes.map(function (stateNode) {\n return _this.getRelativeStateNodes(stateNode, state.historyValue);\n }));\n var isInternal = !!selectedTransition.internal;\n return {\n transitions: [selectedTransition],\n exitSet: isInternal ? [] : flatten(nextStateNodes.map(function (targetNode) {\n return _this.getPotentiallyReenteringNodes(targetNode);\n })),\n configuration: allNextStateNodes,\n source: state,\n actions: actions\n };\n }; // even though the name of this function mentions reentry nodes\n // we are pushing its result into `exitSet`\n // that's because what we exit might be reentered (it's an invariant of reentrancy)\n\n\n StateNode.prototype.getPotentiallyReenteringNodes = function (targetNode) {\n if (this.order < targetNode.order) {\n return [this];\n }\n\n var nodes = [];\n var marker = this;\n var possibleAncestor = targetNode;\n\n while (marker && marker !== possibleAncestor) {\n nodes.push(marker);\n marker = marker.parent;\n }\n\n if (marker !== possibleAncestor) {\n // we never got to `possibleAncestor`, therefore the initial `marker` \"escapes\" it\n // it's in a different part of the tree so no states will be reentered for such an external transition\n return [];\n }\n\n nodes.push(possibleAncestor);\n return nodes;\n };\n\n StateNode.prototype.getActions = function (resolvedConfig, isDone, transition, currentContext, _event, prevState, predictableExec) {\n var e_4, _a, e_5, _b;\n\n var _this = this;\n\n var prevConfig = prevState ? getConfiguration([], this.getStateNodes(prevState.value)) : [];\n var entrySet = new Set();\n\n try {\n for (var _c = __values(Array.from(resolvedConfig).sort(function (a, b) {\n return a.order - b.order;\n })), _d = _c.next(); !_d.done; _d = _c.next()) {\n var sn = _d.value;\n\n if (!has(prevConfig, sn) || has(transition.exitSet, sn) || sn.parent && entrySet.has(sn.parent)) {\n entrySet.add(sn);\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n try {\n for (var prevConfig_1 = __values(prevConfig), prevConfig_1_1 = prevConfig_1.next(); !prevConfig_1_1.done; prevConfig_1_1 = prevConfig_1.next()) {\n var sn = prevConfig_1_1.value;\n\n if (!has(resolvedConfig, sn) || has(transition.exitSet, sn.parent)) {\n transition.exitSet.push(sn);\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (prevConfig_1_1 && !prevConfig_1_1.done && (_b = prevConfig_1.return)) _b.call(prevConfig_1);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n\n transition.exitSet.sort(function (a, b) {\n return b.order - a.order;\n });\n var entryStates = Array.from(entrySet).sort(function (a, b) {\n return a.order - b.order;\n });\n var exitStates = new Set(transition.exitSet);\n var doneEvents = flatten(entryStates.map(function (sn) {\n var events = [];\n\n if (sn.type !== 'final') {\n return events;\n }\n\n var parent = sn.parent;\n\n if (!parent.parent) {\n return events;\n }\n\n events.push(done(sn.id, sn.doneData), // TODO: deprecate - final states should not emit done events for their own state.\n done(parent.id, sn.doneData ? mapContext(sn.doneData, currentContext, _event) : undefined));\n var grandparent = parent.parent;\n\n if (grandparent.type === 'parallel') {\n if (getChildren(grandparent).every(function (parentNode) {\n return isInFinalState(transition.configuration, parentNode);\n })) {\n events.push(done(grandparent.id));\n }\n }\n\n return events;\n }));\n var entryActions = entryStates.map(function (stateNode) {\n var entryActions = stateNode.onEntry;\n var invokeActions = stateNode.activities.map(function (activity) {\n return start(activity);\n });\n return {\n type: 'entry',\n actions: toActionObjects(predictableExec ? __spreadArray(__spreadArray([], __read(entryActions), false), __read(invokeActions), false) : __spreadArray(__spreadArray([], __read(invokeActions), false), __read(entryActions), false), _this.machine.options.actions)\n };\n }).concat({\n type: 'state_done',\n actions: doneEvents.map(function (event) {\n return raise(event);\n })\n });\n var exitActions = Array.from(exitStates).map(function (stateNode) {\n return {\n type: 'exit',\n actions: toActionObjects(__spreadArray(__spreadArray([], __read(stateNode.onExit), false), __read(stateNode.activities.map(function (activity) {\n return stop(activity);\n })), false), _this.machine.options.actions)\n };\n });\n var actions = exitActions.concat({\n type: 'transition',\n actions: toActionObjects(transition.actions, this.machine.options.actions)\n }).concat(entryActions);\n\n if (isDone) {\n var stopActions = toActionObjects(flatten(__spreadArray([], __read(resolvedConfig), false).sort(function (a, b) {\n return b.order - a.order;\n }).map(function (stateNode) {\n return stateNode.onExit;\n })), this.machine.options.actions).filter(function (action) {\n return !isRaisableAction(action);\n });\n return actions.concat({\n type: 'stop',\n actions: stopActions\n });\n }\n\n return actions;\n };\n /**\r\n * Determines the next state given the current `state` and sent `event`.\r\n *\r\n * @param state The current State instance or state value\r\n * @param event The event that was sent at the current state\r\n * @param context The current context (extended state) of the current state\r\n */\n\n\n StateNode.prototype.transition = function (state, event, context, exec) {\n if (state === void 0) {\n state = this.initialState;\n }\n\n var _event = toSCXMLEvent(event);\n\n var currentState;\n\n if (state instanceof State) {\n currentState = context === undefined ? state : this.resolveState(State.from(state, context));\n } else {\n var resolvedStateValue = isString(state) ? this.resolve(pathToStateValue(this.getResolvedPath(state))) : this.resolve(state);\n var resolvedContext = context !== null && context !== void 0 ? context : this.machine.context;\n currentState = this.resolveState(State.from(resolvedStateValue, resolvedContext));\n }\n\n if (!IS_PRODUCTION && _event.name === WILDCARD) {\n throw new Error(\"An event cannot have the wildcard type ('\".concat(WILDCARD, \"')\"));\n }\n\n if (this.strict) {\n if (!this.events.includes(_event.name) && !isBuiltInEvent(_event.name)) {\n throw new Error(\"Machine '\".concat(this.id, \"' does not accept event '\").concat(_event.name, \"'\"));\n }\n }\n\n var stateTransition = this._transition(currentState.value, currentState, _event) || {\n transitions: [],\n configuration: [],\n exitSet: [],\n source: currentState,\n actions: []\n };\n var prevConfig = getConfiguration([], this.getStateNodes(currentState.value));\n var resolvedConfig = stateTransition.configuration.length ? getConfiguration(prevConfig, stateTransition.configuration) : prevConfig;\n stateTransition.configuration = __spreadArray([], __read(resolvedConfig), false);\n return this.resolveTransition(stateTransition, currentState, currentState.context, exec, _event);\n };\n\n StateNode.prototype.resolveRaisedTransition = function (state, _event, originalEvent, predictableExec) {\n var _a;\n\n var currentActions = state.actions;\n state = this.transition(state, _event, undefined, predictableExec); // Save original event to state\n // TODO: this should be the raised event! Delete in V5 (breaking)\n\n state._event = originalEvent;\n state.event = originalEvent.data;\n\n (_a = state.actions).unshift.apply(_a, __spreadArray([], __read(currentActions), false));\n\n return state;\n };\n\n StateNode.prototype.resolveTransition = function (stateTransition, currentState, context, predictableExec, _event) {\n var e_6, _a, e_7, _b;\n\n var _this = this;\n\n if (_event === void 0) {\n _event = initEvent;\n }\n\n var configuration = stateTransition.configuration; // Transition will \"apply\" if:\n // - this is the initial state (there is no current state)\n // - OR there are transitions\n\n var willTransition = !currentState || stateTransition.transitions.length > 0;\n var resolvedConfiguration = willTransition ? stateTransition.configuration : currentState ? currentState.configuration : [];\n var isDone = isInFinalState(resolvedConfiguration, this);\n var resolvedStateValue = willTransition ? getValue(this.machine, configuration) : undefined;\n var historyValue = currentState ? currentState.historyValue ? currentState.historyValue : stateTransition.source ? this.machine.historyValue(currentState.value) : undefined : undefined;\n var actionBlocks = this.getActions(new Set(resolvedConfiguration), isDone, stateTransition, context, _event, currentState, predictableExec);\n var activities = currentState ? __assign({}, currentState.activities) : {};\n\n try {\n for (var actionBlocks_1 = __values(actionBlocks), actionBlocks_1_1 = actionBlocks_1.next(); !actionBlocks_1_1.done; actionBlocks_1_1 = actionBlocks_1.next()) {\n var block = actionBlocks_1_1.value;\n\n try {\n for (var _c = (e_7 = void 0, __values(block.actions)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var action = _d.value;\n\n if (action.type === start$1) {\n activities[action.activity.id || action.activity.type] = action;\n } else if (action.type === stop$1) {\n activities[action.activity.id || action.activity.type] = false;\n }\n }\n } catch (e_7_1) {\n e_7 = {\n error: e_7_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n } finally {\n if (e_7) throw e_7.error;\n }\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (actionBlocks_1_1 && !actionBlocks_1_1.done && (_a = actionBlocks_1.return)) _a.call(actionBlocks_1);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n\n var _e = __read(resolveActions(this, currentState, context, _event, actionBlocks, predictableExec, this.machine.config.predictableActionArguments || this.machine.config.preserveActionOrder), 2),\n resolvedActions = _e[0],\n updatedContext = _e[1];\n\n var _f = __read(partition(resolvedActions, isRaisableAction), 2),\n raisedEvents = _f[0],\n nonRaisedActions = _f[1];\n\n var invokeActions = resolvedActions.filter(function (action) {\n var _a;\n\n return action.type === start$1 && ((_a = action.activity) === null || _a === void 0 ? void 0 : _a.type) === invoke;\n });\n var children = invokeActions.reduce(function (acc, action) {\n acc[action.activity.id] = createInvocableActor(action.activity, _this.machine, updatedContext, _event);\n return acc;\n }, currentState ? __assign({}, currentState.children) : {});\n var nextState = new State({\n value: resolvedStateValue || currentState.value,\n context: updatedContext,\n _event: _event,\n // Persist _sessionid between states\n _sessionid: currentState ? currentState._sessionid : null,\n historyValue: resolvedStateValue ? historyValue ? updateHistoryValue(historyValue, resolvedStateValue) : undefined : currentState ? currentState.historyValue : undefined,\n history: !resolvedStateValue || stateTransition.source ? currentState : undefined,\n actions: resolvedStateValue ? nonRaisedActions : [],\n activities: resolvedStateValue ? activities : currentState ? currentState.activities : {},\n events: [],\n configuration: resolvedConfiguration,\n transitions: stateTransition.transitions,\n children: children,\n done: isDone,\n tags: getTagsFromConfiguration(resolvedConfiguration),\n machine: this\n });\n var didUpdateContext = context !== updatedContext;\n nextState.changed = _event.name === update || didUpdateContext; // Dispose of penultimate histories to prevent memory leaks\n\n var history = nextState.history;\n\n if (history) {\n delete history.history;\n } // There are transient transitions if the machine is not in a final state\n // and if some of the state nodes have transient (\"always\") transitions.\n\n\n var hasAlwaysTransitions = !isDone && (this._transient || configuration.some(function (stateNode) {\n return stateNode._transient;\n })); // If there are no enabled transitions, check if there are transient transitions.\n // If there are transient transitions, continue checking for more transitions\n // because an transient transition should be triggered even if there are no\n // enabled transitions.\n //\n // If we're already working on an transient transition then stop to prevent an infinite loop.\n //\n // Otherwise, if there are no enabled nor transient transitions, we are done.\n\n if (!willTransition && (!hasAlwaysTransitions || _event.name === NULL_EVENT)) {\n return nextState;\n }\n\n var maybeNextState = nextState;\n\n if (!isDone) {\n if (hasAlwaysTransitions) {\n maybeNextState = this.resolveRaisedTransition(maybeNextState, {\n type: nullEvent\n }, _event, predictableExec);\n }\n\n while (raisedEvents.length) {\n var raisedEvent = raisedEvents.shift();\n maybeNextState = this.resolveRaisedTransition(maybeNextState, raisedEvent._event, _event, predictableExec);\n }\n } // Detect if state changed\n\n\n var changed = maybeNextState.changed || (history ? !!maybeNextState.actions.length || didUpdateContext || typeof history.value !== typeof maybeNextState.value || !stateValuesEqual(maybeNextState.value, history.value) : undefined);\n maybeNextState.changed = changed; // Preserve original history after raised events\n\n maybeNextState.history = history;\n return maybeNextState;\n };\n /**\r\n * Returns the child state node from its relative `stateKey`, or throws.\r\n */\n\n\n StateNode.prototype.getStateNode = function (stateKey) {\n if (isStateId(stateKey)) {\n return this.machine.getStateNodeById(stateKey);\n }\n\n if (!this.states) {\n throw new Error(\"Unable to retrieve child state '\".concat(stateKey, \"' from '\").concat(this.id, \"'; no child states exist.\"));\n }\n\n var result = this.states[stateKey];\n\n if (!result) {\n throw new Error(\"Child state '\".concat(stateKey, \"' does not exist on '\").concat(this.id, \"'\"));\n }\n\n return result;\n };\n /**\r\n * Returns the state node with the given `stateId`, or throws.\r\n *\r\n * @param stateId The state ID. The prefix \"#\" is removed.\r\n */\n\n\n StateNode.prototype.getStateNodeById = function (stateId) {\n var resolvedStateId = isStateId(stateId) ? stateId.slice(STATE_IDENTIFIER.length) : stateId;\n\n if (resolvedStateId === this.id) {\n return this;\n }\n\n var stateNode = this.machine.idMap[resolvedStateId];\n\n if (!stateNode) {\n throw new Error(\"Child state node '#\".concat(resolvedStateId, \"' does not exist on machine '\").concat(this.id, \"'\"));\n }\n\n return stateNode;\n };\n /**\r\n * Returns the relative state node from the given `statePath`, or throws.\r\n *\r\n * @param statePath The string or string array relative path to the state node.\r\n */\n\n\n StateNode.prototype.getStateNodeByPath = function (statePath) {\n if (typeof statePath === 'string' && isStateId(statePath)) {\n try {\n return this.getStateNodeById(statePath.slice(1));\n } catch (e) {// try individual paths\n // throw e;\n }\n }\n\n var arrayStatePath = toStatePath(statePath, this.delimiter).slice();\n var currentStateNode = this;\n\n while (arrayStatePath.length) {\n var key = arrayStatePath.shift();\n\n if (!key.length) {\n break;\n }\n\n currentStateNode = currentStateNode.getStateNode(key);\n }\n\n return currentStateNode;\n };\n /**\r\n * Resolves a partial state value with its full representation in this machine.\r\n *\r\n * @param stateValue The partial state value to resolve.\r\n */\n\n\n StateNode.prototype.resolve = function (stateValue) {\n var _a;\n\n var _this = this;\n\n if (!stateValue) {\n return this.initialStateValue || EMPTY_OBJECT; // TODO: type-specific properties\n }\n\n switch (this.type) {\n case 'parallel':\n return mapValues(this.initialStateValue, function (subStateValue, subStateKey) {\n return subStateValue ? _this.getStateNode(subStateKey).resolve(stateValue[subStateKey] || subStateValue) : EMPTY_OBJECT;\n });\n\n case 'compound':\n if (isString(stateValue)) {\n var subStateNode = this.getStateNode(stateValue);\n\n if (subStateNode.type === 'parallel' || subStateNode.type === 'compound') {\n return _a = {}, _a[stateValue] = subStateNode.initialStateValue, _a;\n }\n\n return stateValue;\n }\n\n if (!Object.keys(stateValue).length) {\n return this.initialStateValue || {};\n }\n\n return mapValues(stateValue, function (subStateValue, subStateKey) {\n return subStateValue ? _this.getStateNode(subStateKey).resolve(subStateValue) : EMPTY_OBJECT;\n });\n\n default:\n return stateValue || EMPTY_OBJECT;\n }\n };\n\n StateNode.prototype.getResolvedPath = function (stateIdentifier) {\n if (isStateId(stateIdentifier)) {\n var stateNode = this.machine.idMap[stateIdentifier.slice(STATE_IDENTIFIER.length)];\n\n if (!stateNode) {\n throw new Error(\"Unable to find state node '\".concat(stateIdentifier, \"'\"));\n }\n\n return stateNode.path;\n }\n\n return toStatePath(stateIdentifier, this.delimiter);\n };\n\n Object.defineProperty(StateNode.prototype, \"initialStateValue\", {\n get: function () {\n var _a;\n\n if (this.__cache.initialStateValue) {\n return this.__cache.initialStateValue;\n }\n\n var initialStateValue;\n\n if (this.type === 'parallel') {\n initialStateValue = mapFilterValues(this.states, function (state) {\n return state.initialStateValue || EMPTY_OBJECT;\n }, function (stateNode) {\n return !(stateNode.type === 'history');\n });\n } else if (this.initial !== undefined) {\n if (!this.states[this.initial]) {\n throw new Error(\"Initial state '\".concat(this.initial, \"' not found on '\").concat(this.key, \"'\"));\n }\n\n initialStateValue = isLeafNode(this.states[this.initial]) ? this.initial : (_a = {}, _a[this.initial] = this.states[this.initial].initialStateValue, _a);\n } else {\n // The finite state value of a machine without child states is just an empty object\n initialStateValue = {};\n }\n\n this.__cache.initialStateValue = initialStateValue;\n return this.__cache.initialStateValue;\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.getInitialState = function (stateValue, context) {\n this._init(); // TODO: this should be in the constructor (see note in constructor)\n\n\n var configuration = this.getStateNodes(stateValue);\n return this.resolveTransition({\n configuration: configuration,\n exitSet: [],\n transitions: [],\n source: undefined,\n actions: []\n }, undefined, context !== null && context !== void 0 ? context : this.machine.context, undefined);\n };\n\n Object.defineProperty(StateNode.prototype, \"initialState\", {\n /**\r\n * The initial State instance, which includes all actions to be executed from\r\n * entering the initial state.\r\n */\n get: function () {\n var initialStateValue = this.initialStateValue;\n\n if (!initialStateValue) {\n throw new Error(\"Cannot retrieve initial state from simple state '\".concat(this.id, \"'.\"));\n }\n\n return this.getInitialState(initialStateValue);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"target\", {\n /**\r\n * The target state value of the history state node, if it exists. This represents the\r\n * default state value to transition to if no history value exists yet.\r\n */\n get: function () {\n var target;\n\n if (this.type === 'history') {\n var historyConfig = this.config;\n\n if (isString(historyConfig.target)) {\n target = isStateId(historyConfig.target) ? pathToStateValue(this.machine.getStateNodeById(historyConfig.target).path.slice(this.path.length - 1)) : historyConfig.target;\n } else {\n target = historyConfig.target;\n }\n }\n\n return target;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Returns the leaf nodes from a state path relative to this state node.\r\n *\r\n * @param relativeStateId The relative state path to retrieve the state nodes\r\n * @param history The previous state to retrieve history\r\n * @param resolve Whether state nodes should resolve to initial child state nodes\r\n */\n\n StateNode.prototype.getRelativeStateNodes = function (relativeStateId, historyValue, resolve) {\n if (resolve === void 0) {\n resolve = true;\n }\n\n return resolve ? relativeStateId.type === 'history' ? relativeStateId.resolveHistory(historyValue) : relativeStateId.initialStateNodes : [relativeStateId];\n };\n\n Object.defineProperty(StateNode.prototype, \"initialStateNodes\", {\n get: function () {\n var _this = this;\n\n if (isLeafNode(this)) {\n return [this];\n } // Case when state node is compound but no initial state is defined\n\n\n if (this.type === 'compound' && !this.initial) {\n if (!IS_PRODUCTION) {\n warn(false, \"Compound state node '\".concat(this.id, \"' has no initial state.\"));\n }\n\n return [this];\n }\n\n var initialStateNodePaths = toStatePaths(this.initialStateValue);\n return flatten(initialStateNodePaths.map(function (initialPath) {\n return _this.getFromRelativePath(initialPath);\n }));\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * Retrieves state nodes from a relative path to this state node.\r\n *\r\n * @param relativePath The relative path from this state node\r\n * @param historyValue\r\n */\n\n StateNode.prototype.getFromRelativePath = function (relativePath) {\n if (!relativePath.length) {\n return [this];\n }\n\n var _a = __read(relativePath),\n stateKey = _a[0],\n childStatePath = _a.slice(1);\n\n if (!this.states) {\n throw new Error(\"Cannot retrieve subPath '\".concat(stateKey, \"' from node with no states\"));\n }\n\n var childStateNode = this.getStateNode(stateKey);\n\n if (childStateNode.type === 'history') {\n return childStateNode.resolveHistory();\n }\n\n if (!this.states[stateKey]) {\n throw new Error(\"Child state '\".concat(stateKey, \"' does not exist on '\").concat(this.id, \"'\"));\n }\n\n return this.states[stateKey].getFromRelativePath(childStatePath);\n };\n\n StateNode.prototype.historyValue = function (relativeStateValue) {\n if (!Object.keys(this.states).length) {\n return undefined;\n }\n\n return {\n current: relativeStateValue || this.initialStateValue,\n states: mapFilterValues(this.states, function (stateNode, key) {\n if (!relativeStateValue) {\n return stateNode.historyValue();\n }\n\n var subStateValue = isString(relativeStateValue) ? undefined : relativeStateValue[key];\n return stateNode.historyValue(subStateValue || stateNode.initialStateValue);\n }, function (stateNode) {\n return !stateNode.history;\n })\n };\n };\n /**\r\n * Resolves to the historical value(s) of the parent state node,\r\n * represented by state nodes.\r\n *\r\n * @param historyValue\r\n */\n\n\n StateNode.prototype.resolveHistory = function (historyValue) {\n var _this = this;\n\n if (this.type !== 'history') {\n return [this];\n }\n\n var parent = this.parent;\n\n if (!historyValue) {\n var historyTarget = this.target;\n return historyTarget ? flatten(toStatePaths(historyTarget).map(function (relativeChildPath) {\n return parent.getFromRelativePath(relativeChildPath);\n })) : parent.initialStateNodes;\n }\n\n var subHistoryValue = nestedPath(parent.path, 'states')(historyValue).current;\n\n if (isString(subHistoryValue)) {\n return [parent.getStateNode(subHistoryValue)];\n }\n\n return flatten(toStatePaths(subHistoryValue).map(function (subStatePath) {\n return _this.history === 'deep' ? parent.getFromRelativePath(subStatePath) : [parent.states[subStatePath[0]]];\n }));\n };\n\n Object.defineProperty(StateNode.prototype, \"stateIds\", {\n /**\r\n * All the state node IDs of this state node and its descendant state nodes.\r\n */\n get: function () {\n var _this = this;\n\n var childStateIds = flatten(Object.keys(this.states).map(function (stateKey) {\n return _this.states[stateKey].stateIds;\n }));\n return [this.id].concat(childStateIds);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"events\", {\n /**\r\n * All the event types accepted by this state node and its descendants.\r\n */\n get: function () {\n var e_8, _a, e_9, _b;\n\n if (this.__cache.events) {\n return this.__cache.events;\n }\n\n var states = this.states;\n var events = new Set(this.ownEvents);\n\n if (states) {\n try {\n for (var _c = __values(Object.keys(states)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var stateId = _d.value;\n var state = states[stateId];\n\n if (state.states) {\n try {\n for (var _e = (e_9 = void 0, __values(state.events)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var event_1 = _f.value;\n events.add(\"\".concat(event_1));\n }\n } catch (e_9_1) {\n e_9 = {\n error: e_9_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n } finally {\n if (e_9) throw e_9.error;\n }\n }\n }\n }\n } catch (e_8_1) {\n e_8 = {\n error: e_8_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_8) throw e_8.error;\n }\n }\n }\n\n return this.__cache.events = Array.from(events);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateNode.prototype, \"ownEvents\", {\n /**\r\n * All the events that have transitions directly from this state node.\r\n *\r\n * Excludes any inert events.\r\n */\n get: function () {\n var events = new Set(this.transitions.filter(function (transition) {\n return !(!transition.target && !transition.actions.length && transition.internal);\n }).map(function (transition) {\n return transition.eventType;\n }));\n return Array.from(events);\n },\n enumerable: false,\n configurable: true\n });\n\n StateNode.prototype.resolveTarget = function (_target) {\n var _this = this;\n\n if (_target === undefined) {\n // an undefined target signals that the state node should not transition from that state when receiving that event\n return undefined;\n }\n\n return _target.map(function (target) {\n if (!isString(target)) {\n return target;\n }\n\n var isInternalTarget = target[0] === _this.delimiter; // If internal target is defined on machine,\n // do not include machine key on target\n\n if (isInternalTarget && !_this.parent) {\n return _this.getStateNodeByPath(target.slice(1));\n }\n\n var resolvedTarget = isInternalTarget ? _this.key + target : target;\n\n if (_this.parent) {\n try {\n var targetStateNode = _this.parent.getStateNodeByPath(resolvedTarget);\n\n return targetStateNode;\n } catch (err) {\n throw new Error(\"Invalid transition definition for state node '\".concat(_this.id, \"':\\n\").concat(err.message));\n }\n } else {\n return _this.getStateNodeByPath(resolvedTarget);\n }\n });\n };\n\n StateNode.prototype.formatTransition = function (transitionConfig) {\n var _this = this;\n\n var normalizedTarget = normalizeTarget(transitionConfig.target);\n var internal = 'internal' in transitionConfig ? transitionConfig.internal : normalizedTarget ? normalizedTarget.some(function (_target) {\n return isString(_target) && _target[0] === _this.delimiter;\n }) : true;\n var guards = this.machine.options.guards;\n var target = this.resolveTarget(normalizedTarget);\n\n var transition = __assign(__assign({}, transitionConfig), {\n actions: toActionObjects(toArray(transitionConfig.actions)),\n cond: toGuard(transitionConfig.cond, guards),\n target: target,\n source: this,\n internal: internal,\n eventType: transitionConfig.event,\n toJSON: function () {\n return __assign(__assign({}, transition), {\n target: transition.target ? transition.target.map(function (t) {\n return \"#\".concat(t.id);\n }) : undefined,\n source: \"#\".concat(_this.id)\n });\n }\n });\n\n return transition;\n };\n\n StateNode.prototype.formatTransitions = function () {\n var e_10, _a;\n\n var _this = this;\n\n var onConfig;\n\n if (!this.config.on) {\n onConfig = [];\n } else if (Array.isArray(this.config.on)) {\n onConfig = this.config.on;\n } else {\n var _b = this.config.on,\n _c = WILDCARD,\n _d = _b[_c],\n wildcardConfigs = _d === void 0 ? [] : _d,\n strictTransitionConfigs_1 = __rest(_b, [typeof _c === \"symbol\" ? _c : _c + \"\"]);\n\n onConfig = flatten(Object.keys(strictTransitionConfigs_1).map(function (key) {\n if (!IS_PRODUCTION && key === NULL_EVENT) {\n warn(false, \"Empty string transition configs (e.g., `{ on: { '': ... }}`) for transient transitions are deprecated. Specify the transition in the `{ always: ... }` property instead. \" + \"Please check the `on` configuration for \\\"#\".concat(_this.id, \"\\\".\"));\n }\n\n var transitionConfigArray = toTransitionConfigArray(key, strictTransitionConfigs_1[key]);\n\n if (!IS_PRODUCTION) {\n validateArrayifiedTransitions(_this, key, transitionConfigArray);\n }\n\n return transitionConfigArray;\n }).concat(toTransitionConfigArray(WILDCARD, wildcardConfigs)));\n }\n\n var eventlessConfig = this.config.always ? toTransitionConfigArray('', this.config.always) : [];\n var doneConfig = this.config.onDone ? toTransitionConfigArray(String(done(this.id)), this.config.onDone) : [];\n\n if (!IS_PRODUCTION) {\n warn(!(this.config.onDone && !this.parent), \"Root nodes cannot have an \\\".onDone\\\" transition. Please check the config of \\\"\".concat(this.id, \"\\\".\"));\n }\n\n var invokeConfig = flatten(this.invoke.map(function (invokeDef) {\n var settleTransitions = [];\n\n if (invokeDef.onDone) {\n settleTransitions.push.apply(settleTransitions, __spreadArray([], __read(toTransitionConfigArray(String(doneInvoke(invokeDef.id)), invokeDef.onDone)), false));\n }\n\n if (invokeDef.onError) {\n settleTransitions.push.apply(settleTransitions, __spreadArray([], __read(toTransitionConfigArray(String(error(invokeDef.id)), invokeDef.onError)), false));\n }\n\n return settleTransitions;\n }));\n var delayedTransitions = this.after;\n var formattedTransitions = flatten(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(doneConfig), false), __read(invokeConfig), false), __read(onConfig), false), __read(eventlessConfig), false).map(function (transitionConfig) {\n return toArray(transitionConfig).map(function (transition) {\n return _this.formatTransition(transition);\n });\n }));\n\n try {\n for (var delayedTransitions_1 = __values(delayedTransitions), delayedTransitions_1_1 = delayedTransitions_1.next(); !delayedTransitions_1_1.done; delayedTransitions_1_1 = delayedTransitions_1.next()) {\n var delayedTransition = delayedTransitions_1_1.value;\n formattedTransitions.push(delayedTransition);\n }\n } catch (e_10_1) {\n e_10 = {\n error: e_10_1\n };\n } finally {\n try {\n if (delayedTransitions_1_1 && !delayedTransitions_1_1.done && (_a = delayedTransitions_1.return)) _a.call(delayedTransitions_1);\n } finally {\n if (e_10) throw e_10.error;\n }\n }\n\n return formattedTransitions;\n };\n\n return StateNode;\n}();\n\nexport { StateNode };\n","import { StateNode } from './StateNode.js';\nimport { IS_PRODUCTION } from './environment.js';\n\nvar warned = false;\nfunction Machine(config, options, initialContext) {\n if (initialContext === void 0) {\n initialContext = config.context;\n }\n\n return new StateNode(config, options, initialContext);\n}\nfunction createMachine(config, options) {\n if (!IS_PRODUCTION && !('predictableActionArguments' in config) && !warned) {\n warned = true;\n console.warn('It is highly recommended to set `predictableActionArguments` to `true` when using `createMachine`. https://xstate.js.org/docs/guides/actions.html');\n }\n\n return new StateNode(config, options);\n}\n\nexport { Machine, createMachine };\n","import { WcsSize } from \"../../shared-types\";\n\nexport interface SelectChangeEventDetail {\n value: any | any[] | undefined | null;\n}\n\nexport interface SelectFilterChangeEventDetail {\n value: string | number | undefined | null;\n}\n\nexport type WcsSelectFilterFn = (optionEl: HTMLWcsSelectOptionElement, filter: string) => boolean;\n\n/**\n * Default filtering function. Compares the string start of wcs-select-option element's text content\n * with your filter input.\n * @param optionEl - wcs-select-option element\n * @param filter - input filter field value\n * @constructor\n */\nexport const WcsDefaultSelectFilterFn: WcsSelectFilterFn = (optionEl, filter): boolean => {\n return optionEl.textContent.toLowerCase().startsWith(filter.toLowerCase());\n}\n\nexport const WcsSelectSizeValue = ['m', 'l'] as const; // as const keyword is used to infer and preserve the exact literal values of an array or object.\n\nexport type WcsSelectSize = Extract<WcsSize, typeof WcsSelectSizeValue[number]>;\n\nexport function isWcsSelectSize(size: string): size is WcsSelectSize {\n // @ts-ignore : ignore size type, as it is checked with WcsInputSizeValues\n return WcsSelectSizeValue.includes(size);\n}\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { SelectOptionValue } from '../select-option/select-option-interface';\n\nexport const SelectChips: FunctionalComponent<{\n disabled: boolean,\n option: SelectOptionValue,\n onRemove: (option: SelectOptionValue) => void\n}> = ({disabled, option, onRemove}) => {\n\n const style: { [key: string]: string; } = {};\n\n if (option.chipColor) {\n style['color'] = option.chipColor;\n }\n if (option.chipBackgroundColor) {\n style['background-color'] = option.chipBackgroundColor;\n }\n\n return (\n <label class=\"wcs-select-chip\" style={style} onClick={(e) => e.stopImmediatePropagation()}>\n <div>{option.displayText}</div>\n {\n disabled ?\n null :\n <div onClick={() => onRemove(option)}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"12\" viewBox=\"0 0 20 12\" class=\"chip\">\n <path d=\"M2,0 6,4 10,0 12,2 8,6 12,10 10,12 6,8 2,12 0,10 4,6 0,2 2,0\"\n fill={option.chipColor}\n transform=\"translate(8 0)\"/>\n </svg>\n </div>\n }\n </label>\n );\n}\n","import { keyboardShortcutFromKeyboardEvent } from \"../../utils/keyboard-event\";\n\n// Possibles Shortcut\n// ALT+DOWN_ARROW : open the listbox\n// ALT+UP_ARROW : open the listbox\n\n// MAJ+TAB : close the listbox, blur\n\n// UP_ARROW : focus / highlight the previous option\n// DOWN_ARROW : focus / highlight the next option\n// LEFT_ARROW : (unique) focus / highlight the previous option\n// RIGHT_ARROW : (unique) focus / highlight the previous option\n\n// HOME : select first option\n// END : select last option\n\n// PAGE_UP : select first option\n// PAGE_DOWN : select last option\n\n// ENTER : select currently focused / highlighted option\n// SPACE : select currently focused / highlighted option\n\n// TAB : close the listbox, blur\n// ESCAPE : close the listbox, if autocomplete mode also clears the textbox\n\nexport type KeyboardEventAssociatedAction = OpenSelect\n | CloseSelect\n | ClearAutocompleteInput\n | ClearHighlight\n | HighlightOption\n | FocusOption\n | MoveFocus\n | SelectOption;\n\ntype OpenSelect = {kind: 'OpenSelect'};\ntype CloseSelect = {kind: 'CloseSelect', shouldBlur: boolean};\n\ntype ClearAutocompleteInput = {kind: 'ClearAutocompleteInput'};\n\ntype ClearHighlight = {kind: 'ClearHighlight'};\ntype HighlightOption = {kind: 'HighlightOption', target: 'next' | 'previous' | 'first' | 'last'};\n\ntype SelectOption = {kind: 'SelectOption', target: 'next' | 'previous' | 'first' | 'last' | 'lastHighlighted'};\n\ntype MoveFocus = {kind: 'MoveFocus', target: 'previous'};\n\ntype FocusOption = {kind: 'FocusOption', target: 'next' | 'previous' | 'first' | 'last' | 'lastFocused'};\n\n/**\n * We follow this https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n * @param event\n * @param currentState\n * @param type\n */\nexport function getActionForKeyboardEvent(event: KeyboardEvent, currentState: 'closed' | 'opened', type: 'autocomplete_unique' | 'autocomplete_multiple' | 'unique' | 'multiple'): KeyboardEventAssociatedAction[] {\n const keyboardShortcut = keyboardShortcutFromKeyboardEvent(event);\n\n if(keyboardShortcut === 'UNKNOWN') {\n return [];\n }\n\n switch (currentState) {\n case \"closed\":\n // We handle every available shortcut for the closed state\n switch (keyboardShortcut) {\n case \"MAJ+TAB\":\n switch (type) {\n case \"unique\":\n case \"multiple\":\n return [];\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n // We need to move focus to previous focusable element in order to ignore the wcs-select component\n return [{kind: 'MoveFocus', target: 'previous'}];\n default:\n break;\n }\n break;\n case 'DOWN_ARROW':\n switch (type) {\n case \"unique\":\n return [{kind: 'SelectOption', target: 'next'}];\n case \"autocomplete_multiple\":\n case \"autocomplete_unique\":\n return [{kind: 'OpenSelect'}, {kind: 'HighlightOption', target: 'first'}];\n case \"multiple\":\n return [{kind: 'OpenSelect'}, {kind: 'FocusOption', target: 'first'}];\n default:\n break;\n }\n break;\n case 'RIGHT_ARROW':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n // Do nothing, we navigate between characters inside input field\n return [];\n case \"unique\":\n return [{kind: 'SelectOption', target: 'next'}];\n case \"multiple\":\n return [{kind: 'OpenSelect'}, {kind: 'FocusOption', target: 'first'}];\n default:\n break;\n }\n break;\n case 'UP_ARROW':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n return [{kind: 'OpenSelect'}, {kind: 'HighlightOption', target: 'last'}];\n case \"multiple\":\n break;\n case \"unique\":\n return [{kind: 'SelectOption', target: 'previous'}];\n default:\n break;\n }\n break;\n case 'LEFT_ARROW':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n // Do nothing, we navigate between characters inside input field\n return [];\n case \"unique\":\n return [{kind: 'SelectOption', target: 'previous'}];\n case \"multiple\":\n break;\n default:\n break;\n }\n break;\n case 'ALT+DOWN_ARROW':\n case 'ALT+UP_ARROW':\n switch (type) {\n case \"unique\":\n return [{kind: 'OpenSelect'}, {kind: 'FocusOption', target: 'first'}]\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n case \"multiple\":\n return [{kind: 'OpenSelect'}];\n default:\n break;\n }\n break;\n case 'SPACE':\n case 'ENTER':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n return [];\n case \"unique\":\n case \"multiple\":\n return [{kind: 'OpenSelect'}, {kind: 'FocusOption', target: 'lastFocused'}];\n default:\n break;\n }\n break;\n case 'ESCAPE':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n return [{kind: 'ClearAutocompleteInput'}];\n case 'unique':\n case 'multiple':\n return [];\n default:\n break;\n }\n break;\n case 'PAGE_UP':\n switch (type) {\n case \"autocomplete_unique\":\n return [];\n case \"autocomplete_multiple\":\n return [];\n case \"unique\":\n return [{kind: 'SelectOption', target: 'first'}];\n case \"multiple\":\n return [];\n default:\n break;\n }\n break;\n case 'PAGE_DOWN':\n switch (type) {\n case \"autocomplete_unique\":\n return [];\n case \"autocomplete_multiple\":\n return [];\n case \"unique\":\n return [{kind: 'SelectOption', target: 'last'}];\n case \"multiple\":\n return [];\n default:\n break;\n }\n break;\n default:\n break;\n }\n break;\n case 'opened':\n // We handle every available shortcut for the opened state\n switch (keyboardShortcut) {\n case 'ESCAPE':\n switch (type) {\n case 'unique':\n case 'multiple':\n case 'autocomplete_unique':\n case 'autocomplete_multiple':\n return [{kind: 'CloseSelect', shouldBlur: false}];\n default:\n break;\n }\n break;\n case 'ALT+UP_ARROW':\n switch (type) {\n case 'unique':\n case 'multiple':\n return [{kind: 'CloseSelect', shouldBlur: false}];\n case 'autocomplete_unique':\n case 'autocomplete_multiple':\n // We must keep select autocomplete opened\n return [];\n default:\n break;\n }\n break;\n case 'TAB':\n switch (type) {\n case \"autocomplete_unique\":\n return [{kind: 'SelectOption', target: 'lastHighlighted'}, {kind: 'CloseSelect', shouldBlur: false}];\n case \"autocomplete_multiple\":\n return [{kind: 'CloseSelect', shouldBlur: false}];\n case \"unique\":\n case \"multiple\":\n return [{kind: 'CloseSelect', shouldBlur: true}];\n default:\n break;\n }\n break;\n case 'MAJ+TAB':\n switch (type) {\n case \"autocomplete_unique\":\n // We don't blur the select when we close it because we move the focus manually just after closing it.\n return [{kind: 'SelectOption', target: 'lastHighlighted'}, {kind: 'CloseSelect', shouldBlur: false}, {kind: 'MoveFocus', target: 'previous'}];\n case \"autocomplete_multiple\":\n // We don't blur the select when we close it because we move the focus manually just after closing it.\n return [{kind: 'CloseSelect', shouldBlur: false}, {kind: 'MoveFocus', target: 'previous'}];\n case \"unique\":\n case \"multiple\":\n return [{kind: 'CloseSelect', shouldBlur: true}];\n default:\n break;\n }\n break;\n case 'UP_ARROW':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n return [{kind: 'HighlightOption', target: 'previous'}]\n case \"unique\":\n case \"multiple\":\n return [{kind: 'FocusOption', target: 'previous'}];\n default:\n break;\n }\n break;\n case 'LEFT_ARROW':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n // We do nothing (navigate between characters in input field)\n return [];\n case \"unique\":\n case \"multiple\":\n return [{kind: 'FocusOption', target: 'previous'}];\n default:\n break;\n }\n break;\n case 'DOWN_ARROW':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n return [{kind: 'HighlightOption', target: 'next'}]\n case \"unique\":\n case \"multiple\":\n return [{kind: 'FocusOption', target: 'next'}];\n default:\n break;\n }\n break;\n case 'RIGHT_ARROW':\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n // We do nothing (navigate between characters in input field)\n return [];\n case \"unique\":\n case \"multiple\":\n return [{kind: 'FocusOption', target: 'next'}];\n default:\n break;\n }\n break;\n case \"PAGE_UP\":\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n return [{kind: 'HighlightOption', target: 'first'}];\n case \"unique\":\n case \"multiple\":\n return [{kind: 'FocusOption', target: 'first'}];\n default:\n break;\n }\n break;\n case \"PAGE_DOWN\":\n switch (type) {\n case \"autocomplete_unique\":\n case \"autocomplete_multiple\":\n return [{kind: 'HighlightOption', target: 'last'}];\n case \"unique\":\n case \"multiple\":\n return [{kind: 'FocusOption', target: 'last'}];\n default:\n break;\n }\n break;\n case \"ENTER\":\n switch (type) {\n case \"autocomplete_unique\":\n return [{kind: 'SelectOption', target: 'lastHighlighted'}];\n case \"autocomplete_multiple\":\n return [{kind: 'SelectOption', target: 'lastHighlighted'}];\n case \"unique\":\n case \"multiple\":\n // Do nothing, let's select option emit an event\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n break;\n default:\n throw Error('Unknown error');\n }\n return [];\n}\n","@import '../../style/placeholder.scss';\n\n:host {\n // Global\n --wcs-select-ligther-percentage: 40; // TODO: view to migrate to design tokens later (used on 'close' icon of a chip)\n --wcs-select-control-border-radius: var(--wcs-semantic-border-radius-base);\n\n --wcs-select-text-color-disabled: var(--wcs-semantic-color-text-disabled);\n --wcs-select-value-color: var(--wcs-semantic-color-text-primary);\n --wcs-select-value-font-weight: var(--wcs-semantic-font-weight-medium);\n\n --wcs-select-placeholder-color: var(--wcs-semantic-color-text-tertiary);\n --wcs-select-placeholder-font-weight: var(--wcs-semantic-font-weight-roman);\n --wcs-select-placeholder-font-style: var(--wcs-semantic-font-style-control-placeholder);\n\n // Options\n --wcs-select-options-padding: var(--wcs-semantic-spacing-base-150);\n\n // Control\n --wcs-select-control-line-height: var(--wcs-semantic-font-line-height-large);\n\n --wcs-select-control-background-color: var(--wcs-semantic-color-background-control-default);\n\n --wcs-select-control-arrow-color: var(--wcs-semantic-color-foreground-action-secondary-default);\n --wcs-select-control-arrow-color-disabled: var(--wcs-semantic-color-foreground-disabled);\n\n --wcs-select-control-chips-gap: var(--wcs-semantic-spacing-small);\n\n --wcs-select-control-border-color-default: var(--wcs-semantic-color-border-primary);\n --wcs-select-control-border-color-disabled: var(--wcs-semantic-color-border-disabled);\n --wcs-select-control-border-color-focus: var(--wcs-semantic-color-border-control-focus);\n --wcs-select-control-border-color-error: var(--wcs-semantic-color-border-critical);\n\n --wcs-select-control-border-style-default: solid;\n --wcs-select-control-border-style-error: solid;\n --wcs-select-control-border-style-focus: var(--wcs-semantic-border-style-focus-control);\n\n --wcs-select-control-border-width-default: var(--wcs-semantic-border-width-default);\n --wcs-select-control-border-width-focus: var(--wcs-semantic-border-width-large);\n\n --wcs-select-control-padding-horizontal-m: var(--wcs-semantic-spacing-large);\n --wcs-select-control-padding-horizontal-l: var(--wcs-semantic-spacing-large);\n\n --wcs-select-control-height: var(--wcs-select-control-height-m);\n --wcs-select-control-height-m: var(--wcs-semantic-size-m);\n --wcs-select-control-height-l: var(--wcs-semantic-size-l);\n --wcs-internal-select-chip-size: var(--wcs-semantic-size-s);\n --wcs-select-control-font-size: var(--wcs-select-control-font-size-m, 1rem);\n --wcs-select-control-font-size-m: var(--wcs-semantic-font-size-m);\n --wcs-select-control-font-size-l: var(--wcs-semantic-font-size-l);\n\n // Overlay\n --wcs-select-overlay-max-height: 360px;\n --wcs-select-overlay-background-color: var(--wcs-semantic-color-background-surface-primary);\n --wcs-select-overlay-border-width: var(--wcs-semantic-border-width-default);\n --wcs-select-overlay-border-color: var(--wcs-semantic-color-border-secondary);\n --wcs-select-overlay-border-radius: var(--wcs-semantic-border-radius-base);\n\n // Chips\n --wcs-select-control-chip-color-default: var(--wcs-semantic-color-foreground-action-primary-default);\n --wcs-select-control-chip-color-disabled: var(--wcs-semantic-color-text-disabled);\n --wcs-select-control-chip-background-color-default: var(--wcs-semantic-color-background-action-primary-default);\n --wcs-select-control-chip-background-color-disabled: var(--wcs-semantic-color-background-action-primary-disabled);\n --wcs-select-control-chip-padding-vertical: var(--wcs-semantic-spacing-small);\n --wcs-select-control-chip-padding-horizontal: calc(1.5 * var(--wcs-semantic-spacing-base));\n --wcs-select-control-chip-line-height: var(--wcs-semantic-font-line-height-large);\n --wcs-select-control-chip-border-radius: var(--wcs-semantic-border-radius-base);\n\n // Autocomplete\n --wcs-select-control-autocomplete-padding-vertical-m: var(--wcs-semantic-spacing-small);\n --wcs-select-control-autocomplete-padding-vertical-l: var(--wcs-semantic-spacing-small);\n\n // No Result Container\n --wcs-select-internal-noresult-padding-horizontal: var(--wcs-semantic-spacing-base);\n\n display: block;\n min-height: var(--wcs-select-control-height);\n position: relative;\n outline: none;\n user-select: none;\n box-sizing: border-box;\n\n // So the arrow on the right doesn't shrink when text overflows.\n svg {\n flex-shrink: 0;\n }\n\n .wcs-select-control {\n min-height: var(--wcs-select-control-height);\n outline: var(--wcs-select-control-border-width-default) var(--wcs-select-control-border-style-default) var(--wcs-select-control-border-color-default);\n outline-offset: calc(var(--wcs-select-control-border-width-default) * -1);\n }\n\n .arrow {\n fill: var(--wcs-select-control-arrow-color);\n }\n\n .chip {\n fill: var(--wcs-select-control-chip-color-default);\n opacity: calc((100 - var(--wcs-select-ligther-percentage)) / 100); // TODO, see later to migrate to design tokens\n\n &:hover {\n opacity: 100;\n }\n }\n}\n\n@mixin select-control-outline-focus {\n outline: var(--wcs-select-control-border-width-focus) var(--wcs-select-control-border-style-focus) var(--wcs-select-control-border-color-focus);\n outline-offset: calc(var(--wcs-select-control-border-width-focus) * -1);\n}\n\n@mixin select-control-outline-error {\n outline-style: var(--wcs-select-control-border-style-error);\n outline-color: var(--wcs-select-control-border-color-error);\n}\n\n@mixin select-control-outline-disabled {\n outline-style: var(--wcs-select-control-border-style-default);\n outline-color: var(--wcs-select-control-border-color-disabled);\n}\n\n.wcs-select-control {\n box-sizing: border-box;\n\n display: flex;\n align-items: center;\n\n background-color: var(--wcs-select-control-background-color);\n border-radius: var(--wcs-select-control-border-radius);\n outline: var(--wcs-select-control-border-color-default) solid var(--wcs-select-control-border-width-default); // because some theme might use default border\n outline-offset: calc(var(--wcs-select-control-border-width-default) * -1);\n\n font-size: var(--wcs-select-control-font-size, 1rem);\n line-height: var(--wcs-select-control-line-height);\n cursor: pointer;\n\n padding-left: var(--wcs-select-control-padding-horizontal-m);\n padding-right: calc(var(--wcs-select-control-padding-horizontal-m) - 4px); // 4px is the blank space inside the arrow svg on the right\n}\n\nlabel {\n &.wcs-select-placeholder {\n color: var(--wcs-select-placeholder-color);\n font-style: var(--wcs-select-placeholder-font-style);\n font-weight: var(--wcs-select-placeholder-font-weight);\n }\n\n &.wcs-select-value {\n color: var(--wcs-select-value-color);\n font-style: normal;\n font-weight: var(--wcs-select-value-font-weight);\n }\n\n cursor: pointer;\n transition: color 125ms ease-in;\n // Hide overflowing display text\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &::after {\n // https://stackoverflow.com/questions/51640141/font-style-italic-makes-text-protrude-from-container-cutting-off-text\n content: '';\n padding: 1px;\n }\n}\n\n.wcs-select-value-container {\n max-width: calc(100% - calc(24px + var(--wcs-semantic-spacing-base))); // 24px (width of arrow svg) + 8px of padding = 32px\n padding-right: 8px; // to avoid overflow on arrow\n\n display: flex;\n flex-direction: row;\n gap: var(--wcs-select-control-chips-gap);\n align-items: center;\n flex-wrap: wrap;\n}\n\n.wcs-select-chip {\n box-sizing: border-box;\n height: var(--wcs-internal-select-chip-size);\n line-height: var(--wcs-select-control-chip-line-height);\n color: var(--wcs-select-control-chip-color-default);\n background-color: var(--wcs-select-control-chip-background-color-default);\n border-radius: var(--wcs-select-control-chip-border-radius);\n display: flex;\n align-items: center;\n padding: var(--wcs-select-control-chip-padding-vertical) var(--wcs-select-control-chip-padding-horizontal);\n overflow: initial;\n z-index: 1;\n}\n\n.wcs-select-options {\n display: none;\n position: absolute;\n z-index: 999999999;\n\n border: solid var(--wcs-select-overlay-border-width) var(--wcs-select-overlay-border-color);\n border-radius: var(--wcs-select-overlay-border-radius);\n\n max-height: var(--wcs-select-overlay-max-height);\n overflow-y: auto;\n width: calc(100% - calc(calc(2 * var(--wcs-select-overlay-border-width)) + calc(2 * var(--wcs-select-options-padding))));\n padding: var(--wcs-select-options-padding);\n\n background-color: var(--wcs-select-overlay-background-color);\n}\n\n:host(.expanded) {\n outline-width: var(--wcs-select-control-border-width-focus);\n\n .wcs-select-control {\n @include select-control-outline-focus;\n }\n\n .wcs-select-options {\n display: block;\n }\n}\n\n:host([aria-invalid=true]), :host([autocomplete]):has(input[aria-invalid=true]) {\n .wcs-select-control {\n @include select-control-outline-error;\n }\n}\n\n:host(:not(.expanded):focus-visible) {\n outline-width: var(--wcs-select-control-border-width-focus);\n\n .wcs-select-control {\n @include select-control-outline-focus;\n }\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n --wcs-select-control-background-color: var(--wcs-semantic-color-background-control-disabled);\n\n .wcs-select-control {\n @include select-control-outline-disabled;\n }\n\n .wcs-select-control,\n label {\n cursor: default;\n pointer-events: none;\n }\n\n label {\n color: var(--wcs-select-text-color-disabled);\n }\n\n .arrow {\n fill: var(--wcs-select-control-arrow-color-disabled);\n }\n\n .wcs-select-chip {\n color: var(--wcs-select-control-chip-color-disabled);\n background-color: var(--wcs-select-control-chip-background-color-disabled);\n }\n\n .chip {\n fill: var(--wcs-select-control-chip-color-disabled);\n }\n}\n\n:host([size=m]) {\n --wcs-select-control-font-size: var(--wcs-select-control-font-size-m);\n --wcs-select-control-height: var(--wcs-select-control-height-m);\n --wcs-internal-select-chip-size: var(--wcs-select-chip-size-m);\n\n .wcs-select-control {\n padding-left: var(--wcs-select-control-padding-horizontal-m);\n padding-right: calc(var(--wcs-select-control-padding-horizontal-m) - 4px); // 4px is the blank space inside the arrow svg on the right\n }\n\n &:host([autocomplete]) {\n .autocomplete-field {\n height: calc(var(--wcs-select-control-height) - var(--wcs-select-control-autocomplete-padding-vertical-m) * 2);\n }\n\n .wcs-select-value-container {\n // (select height - chips height) / 2 - border width\n padding-top: var(--wcs-select-control-autocomplete-padding-vertical-m);\n padding-bottom: var(--wcs-select-control-autocomplete-padding-vertical-m);\n }\n }\n}\n\n:host([size=l]) {\n --wcs-select-control-font-size: var(--wcs-select-control-font-size-l);\n --wcs-select-control-height: var(--wcs-select-control-height-l);\n --wcs-internal-select-chip-size: var(--wcs-select-chip-size-l);\n\n .wcs-select-control {\n padding-left: var(--wcs-select-control-padding-horizontal-l);\n padding-right: calc(var(--wcs-select-control-padding-horizontal-l) - 4px); // 4px is the blank space inside the arrow svg on the right\n }\n\n &:host([autocomplete]) {\n .autocomplete-field {\n height: calc(var(--wcs-select-control-height) - var(--wcs-select-control-autocomplete-padding-vertical-l) * 2);\n }\n\n .wcs-select-value-container {\n padding-top: var(--wcs-select-control-autocomplete-padding-vertical-l);\n padding-bottom: var(--wcs-select-control-autocomplete-padding-vertical-l);\n }\n }\n}\n\n:host([chips]) {\n .wcs-select-control {\n flex-wrap: wrap;\n }\n\n .wcs-select-value-container {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n}\n\n\n:host([autocomplete]) {\n .wcs-select-value-container {\n margin: 0;\n width: 100%;\n }\n\n input {\n font: unset;\n background-color: transparent;\n outline: none;\n border: none;\n padding: unset;\n\n color: var(--wcs-select-value-color);\n font-weight: var(--wcs-select-value-font-weight) !important;\n font-size: var(--wcs-select-control-font-size);\n line-height: inherit;\n\n &::placeholder {\n @include placeholder(var(--wcs-select-placeholder-color), var(--wcs-select-placeholder-font-weight), var(--wcs-select-placeholder-font-style));\n }\n }\n}\n\n:host([autocomplete]:focus-within) {\n .wcs-select-control {\n @include select-control-outline-focus;\n }\n}\n\n.autocomplete-field {\n width: 0;\n min-width: 50px;\n flex-grow: 1;\n}\n\n.noresult-container {\n padding-left: var(--wcs-select-internal-noresult-padding-horizontal);\n padding-right: var(--wcs-select-internal-noresult-padding-horizontal);\n\n display: flex;\n flex-direction: row;\n align-items: center;\n height: var(--wcs-select-control-height);\n}\n","import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch\n} from '@stencil/core';\n\nimport { interpret, Interpreter, Machine, MachineConfig, MachineOptions } from 'xstate';\nimport {\n isWcsSelectSize,\n SelectChangeEventDetail,\n SelectFilterChangeEventDetail,\n WcsDefaultSelectFilterFn,\n WcsSelectFilterFn,\n WcsSelectSize,\n WcsSelectSizeValue\n} from './select-interface';\nimport { SelectArrow } from './select-arrow';\nimport { SelectOptionChosedEvent, SelectOptionValue } from '../select-option/select-option-interface';\nimport {\n isElement,\n generateUniqueId,\n findItemLabel,\n inheritAriaAttributes,\n inheritAttributes, setOrRemoveAttribute, compareLists\n} from '../../utils/helpers';\nimport { SelectChips } from './select-chips';\nimport { createPopper, Instance } from '@popperjs/core';\nimport { isEqual } from 'lodash-es';\nimport { getActionForKeyboardEvent, KeyboardEventAssociatedAction } from './select-keyboard-event';\nimport { isFocusable } from '../../utils/accessibility';\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\ninterface SelectStateSchema {\n states: {\n closed: {};\n opened: {};\n };\n}\n\ntype SelectEvent\n = { type: 'OPEN' }\n | { type: 'CLOSE', value: { shouldBlur?: boolean, fromKeyboard: boolean } }\n | { type: 'CLICK' }\n | { type: 'OPTION_SELECTED', value: { option: SelectOptionChosedEvent, fromKeyboard: boolean } };\n\nconst SELECT_MACHINE_CONFIG: MachineConfig<any, SelectStateSchema, SelectEvent> = {\n key: 'select',\n initial: 'closed',\n states: {\n closed: {\n entry: ['close'],\n on: {\n CLICK: 'opened',\n OPEN: 'opened',\n OPTION_SELECTED: {actions: ['selectOption']}\n },\n },\n opened: {\n entry: ['open'],\n on: {\n CLICK: 'closed',\n CLOSE: 'closed',\n OPTION_SELECTED: {actions: ['selectOption']}\n },\n },\n }\n};\n\nconst SELECT_INHERITED_ATTRS = ['tabindex', 'title'];\n\n/**\n * The select component (also named combobox) is a form component that allows users to select one or more options\n * from a list.\n * Use it with several slotted `wcs-select-option` inside.\n *\n * @slot filter-no-result Contains the customizable \"No result found\" div (autocomplete mode only).\n * \n * @cssprop --wcs-select-control-arrow-color - Color of the select arrow\n * @cssprop --wcs-select-control-arrow-color-disabled - Color of the select arrow when disabled\n * \n * @cssprop --wcs-select-control-background-color - Background color of the select control\n * \n * @cssprop --wcs-select-control-line-height - Line height of the select control\n * \n * @cssprop --wcs-select-options-padding - Padding of the select options container\n * \n * @cssprop --wcs-select-control-border-radius - Border radius of the select control\n * @cssprop --wcs-select-control-border-width-default - Border width of the select control when not focused\n * @cssprop --wcs-select-control-border-width-focus - Border width of the select control when focused\n * \n * @cssprop --wcs-select-control-border-color-default - Border color of the select control when not focused\n * @cssprop --wcs-select-control-border-color-disabled - Border color of the select control when disabled\n * @cssprop --wcs-select-control-border-color-error - Border color of the select control when error\n * @cssprop --wcs-select-control-border-color-focus - Border color of the select control when focused (not opened, but the control is focused)\n * \n * @cssprop --wcs-select-value-color - Text color of the select value when not focused \n * @cssprop --wcs-select-value-font-weight - Font weight of the select value\n * \n * @cssprop --wcs-select-placeholder-color - Text color of the select placeholder\n * @cssprop --wcs-select-placeholder-font-weight - Font weight of the select placeholder\n * @cssprop --wcs-select-placeholder-font-style - Font style of the select placeholder\n *\n * @cssprop --wcs-select-text-color-disabled - Text color of the select when disabled\n *\n * @cssprop --wcs-select-control-border-style-default - Border style of the select control when not focused\n * @cssprop --wcs-select-control-border-style-focus - Border style of the select control when focused\n * @cssprop --wcs-select-control-border-style-error - Border style of the select control when error\n * \n * @cssprop --wcs-select-control-chips-gap - Gap between chips (only in multiple mode)\n *\n * @cssprop --wcs-select-control-height-m - Height of the select control in medium size\n * @cssprop --wcs-select-control-height-l - Height of the select control in large size\n * \n * @cssprop --wcs-select-control-autocomplete-padding-vertical-m - Padding vertical (top - bottom) of the select control in size m\n * @cssprop --wcs-select-control-autocomplete-padding-vertical-l - Padding vertical (top - bottom) of the select control in size l\n * @cssprop --wcs-select-control-padding-horizontal-m - Padding horizontal (left - right) in medium size\n * @cssprop --wcs-select-control-padding-horizontal-l - Padding horizontal (left - right) in large size\n * \n * @cssprop --wcs-select-control-font-size-m - Font size of the select in size m\n * @cssprop --wcs-select-control-font-size-l - Font size of the select in size m\n * \n * \n * @cssprop --wcs-select-control-chip-color-default - Color default of the select chip\n * @cssprop --wcs-select-control-chip-color-disabled - Color disabled of the select chip\n * @cssprop --wcs-select-control-chip-background-color-default - Background color default of the select chip\n * @cssprop --wcs-select-control-chip-background-color-disabled - Disabled background color of the select chip\n * @cssprop --wcs-select-control-chip-padding-vertical - Padding vertical (top - bottom) of the select chip\n * @cssprop --wcs-select-control-chip-padding-horizontal - Padding horizontal (left - right) of the select chip\n * @cssprop --wcs-select-control-chip-line-height - Line height of the select chip\n * @cssprop --wcs-select-control-chip-border-radius - Border radius of the select chip\n * \n * @cssprop --wcs-select-overlay-max-height - Max height of the select overlay\n * @cssprop --wcs-select-overlay-background-color - Background color of the select overlay\n * @cssprop --wcs-select-overlay-border-width - Border width of the select overlay\n * @cssprop --wcs-select-overlay-border-color - Border color of the select overlay\n * @cssprop --wcs-select-overlay-border-radius - Border radius of the overlay\n */\n@Component({\n tag: 'wcs-select',\n styleUrl: 'select.scss',\n shadow: true\n})\nexport class Select implements ComponentInterface, MutableAriaAttribute {\n @Element() private el!: HTMLWcsSelectElement;\n private inheritedAttributes: { [k: string]: any } = {};\n \n private stateService!: Interpreter<any, SelectStateSchema, SelectEvent>;\n\n private selectId = `wcs-select-${selectIds++}`;\n private labelElement: HTMLWcsLabelElement;\n private optionsEl!: HTMLDivElement;\n private optionsId = generateUniqueId(\"OPTIONS\");\n private controlEl!: HTMLDivElement;\n\n // Only used for multiples.\n private values: SelectOptionValue[];\n\n /**\n * This attribute mutate when a new option is selected OR unselected\n * @private\n */\n private lastModifiedOptionElement: HTMLWcsSelectOptionElement | null;\n /**\n * It serves for accessibility feature: keyboard navigation. It serves to focus the option if defined when the select\n * is opened based on which key pressed.\n *\n * When the select is <b>opened</b> user can navigate through options with keyboard:\n *\n * - Arrow right | down: `lastFocusedOptionElement` equals to the next option of `lastFocusedOptionElement` or\n * the first if `lastFocusedOptionElement` is not defined\n * - Arrow left | top: `lastFocusedOptionElement` equals to the previous enabled option of `lastFocusedOptionElement`\n * or the first if `lastFocusedOptionElement` is not defined\n * - Page up: `lastFocusedOptionElement` equals to the first enabled option\n * - Page down: `lastFocusedOptionElement` equals to the last enabled option\n * @private\n */\n private lastFocusedOptionElement: HTMLWcsSelectOptionElement | null;\n\n // Only used for autocomplete.\n private lastHighlightedOptionElement: HTMLWcsSelectOptionElement | null;\n private autocompleteInput: HTMLInputElement;\n\n /** Whether the select is expanded */\n @State()\n private expanded: boolean = false;\n\n /**\n * Specify the size (height) of the select.\n */\n @Prop({reflect: true}) size: WcsSelectSize = 'm';\n\n /** Text to display for the selected option, when no option is selected, the value is undefined. */\n @State()\n private displayText: string;\n\n /** When the host is focused. */\n @State()\n // @ts-ignore\n private focused: boolean;\n\n /** The currently selected value. */\n @Prop({mutable: true})\n value?: any | null;\n\n /** The text to display when the select is empty. */\n @Prop({mutable: true, reflect: true})\n placeholder?: string | null;\n\n /** If `true`, the user cannot interact with the select. */\n @Prop({ reflect: true, mutable: true })\n disabled: boolean = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop({ reflect: true })\n required: boolean = false;\n\n /** If `true`, the user can select multiple values at once. */\n @Prop({ reflect: true })\n multiple: boolean = false;\n\n /** If `true`, the select acts as an autocomplete field to filter your results. */\n @Prop({ reflect: true })\n autocomplete: boolean = false;\n\n /**\n * **Only works with `autocomplete` mode.** \n * If `true`, the server mode disables the client-side filtering on your select and allows you to handle\n * which options should be present in your DOM.\n */\n @Prop({ reflect: true })\n serverMode: boolean = false;\n\n /**\n * **Only works with `autocomplete` mode.** \n * Customizable sort function to change the comparison of values. If not provided, uses the default behavior :\n * `option.textContent.toLowerCase().startsWith(filter.toLowerCase())`\n */\n @Prop({attribute: null}) filterFn: WcsSelectFilterFn;\n\n /** If `true`, selected items are shown in chips mode. */\n @Prop({ reflect: true })\n chips: boolean = false;\n\n /** The name of the control, which is submitted with the form data. */\n @Prop()\n name?: string;\n\n /** Function used to compare options, default : deep comparison. */\n @Prop()\n compareWith?: (optionValue: any, selectedValue: any) => boolean = (optionValue, selectedValue) => isEqual(optionValue, selectedValue);\n\n private popper: Instance;\n\n /**\n * Boolean to toggle the text \"No result found\" (only for autocomplete with filter)\n * @private\n */\n @State() private showNoResultFoundLabel: boolean = false;\n\n /**\n * Value of the autocomplete input field\n * @private\n */\n @State() private autocompleteValue = undefined;\n\n @State() private overlayDirection: 'bottom' | 'top' = 'bottom';\n\n /** Emitted when the value has changed. */\n @Event() wcsChange!: EventEmitter<SelectChangeEventDetail>;\n\n /** Emitted when the select has focus. */\n @Event() wcsFocus!: EventEmitter<FocusEvent>;\n\n /** Emitted when the select loses focus. */\n @Event() wcsBlur!: EventEmitter<FocusEvent>;\n\n /** Emitted when the autocomplete filter has changed. */\n @Event() wcsFilterChange!: EventEmitter<SelectFilterChangeEventDetail>;\n\n /** Open the component. */\n @Method()\n async open() {\n this.stateService.send('OPEN');\n }\n\n /** Close the component. */\n @Method()\n async close() {\n this.stateService.send('CLOSE');\n }\n\n @Watch('value')\n onValueChangeHandler(newValue: any) {\n this.updateSelectedValue(newValue);\n }\n\n /**\n * Updates the selected value(s) of the component and manages the internal state accordingly\n *\n * @param value - The value(s) to be selected in the component\n * For single selection mode: any value that matches an option's value\n * For multiple selection mode: a single value or an array of values\n * @param resetIfNoValue - When true and no value is provided, the select component will be reset\n * Defaults to true\n */\n private updateSelectedValue(value: any, resetIfNoValue = true, shouldEmitFilterChangeEvent = true) {\n // If no value is passed, the select is reset.\n if (!value && resetIfNoValue) {\n this.reset();\n }\n if (this.multiple) {\n // If user don't give an array, we provide one\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n // We assume that the last modified option in multiple mode is the last one in the array\n this.lastModifiedOptionElement = value.length > 0 ? Array.from(this.options).find(opt => this.compareWith(opt.value, value[value.length - 1])) ?? null : null;\n\n if (this.serverMode) {\n // in server mode, we don't know all the possible select options, so we assume the value is correct,\n // and we just sync the displayText and current available options\n const compareResult = compareLists(this.values.map(v => v.value), value, this.compareWith);\n compareResult.added.forEach(addedOption => {\n const option = Array.from(this.options).find(opt => this.compareWith(opt.value, addedOption)); \n if (option) {\n this.values.push({\n value: option.value,\n displayText: option.innerText,\n chipColor: option.chipColor,\n chipBackgroundColor: option.chipBackgroundColor\n });\n option.selected = true;\n }\n });\n\n\n // We update the selected options when the slot changes to keep the selected options in sync with the current value\n compareResult.kept.forEach((keptOption: string) => {\n const option = Array.from(this.options).find(opt => this.compareWith(opt.value, keptOption));\n if (option) {\n option.selected = true;\n }\n\n })\n \n compareResult.removed.forEach(removedOption => {\n this.values = this.values.filter(v => !this.compareWith(v.value, removedOption));\n const removedOptionElement = Array.from(this.options).find(opt => this.compareWith(opt.value, removedOption));\n if (removedOptionElement) {\n removedOptionElement.selected = false;\n }\n });\n } else {\n this.values = [];\n \n this.options.forEach((opt: HTMLWcsSelectOptionElement) => {\n const isSelected = value ?\n value.findIndex(v => this.compareWith(opt.value, v)) !== -1\n : false;\n if (isSelected) {\n this.values.push({\n value: opt.value,\n displayText: opt.innerText,\n chipColor: opt.chipColor,\n chipBackgroundColor: opt.chipBackgroundColor\n });\n }\n opt.selected = isSelected;\n });\n }\n // update select placeholder text\n this.displayText = this.values.length !== 0\n ? this.values.map(v => v.displayText).join(', ')\n : undefined;\n } else {\n let hasFoundCurrentValueInOptionList = false;\n this.options.forEach((opt: HTMLWcsSelectOptionElement) => {\n const isSelected = this.compareWith(opt.value, value);\n if (isSelected) {\n hasFoundCurrentValueInOptionList = true;\n this.displayText = opt.innerText;\n this.lastModifiedOptionElement = opt;\n if (this.autocomplete) {\n this.setAutocompleteValue(opt.innerText, false, false, shouldEmitFilterChangeEvent);\n }\n }\n opt.selected = isSelected;\n });\n // we are in server mode and the current select value hasn't been found, we set the AutocompleteValue (filter) to undefined\n // This is important to preserve the same state logic as when a value change and we set the filter to that value\n // Not doing that implies the displayText is not updated because of the check in le slot change handler\n if (this.serverMode && !hasFoundCurrentValueInOptionList) {\n this.setAutocompleteValue('', false, false, shouldEmitFilterChangeEvent);\n this.displayText = '';\n }\n }\n }\n\n\n /**\n * Reset the select: unselects all options for multiple mode and displays the placeholder\n * @private\n */\n private reset() {\n this.values = [];\n this.displayText = undefined;\n if (this.autocomplete) {\n // When need to reset the internal filter state of the component as the mutation of \n // autocompleteValue from the code doesn't call onAutocompleteInputEvent method.\n this.setAutocompleteValue('', true);\n }\n this.options.forEach((opt: HTMLWcsSelectOptionElement) => {\n opt.selected = false;\n });\n }\n\n componentDidLoad() {\n this.optionsEl = this.el.shadowRoot.querySelector('.wcs-select-options');\n this.controlEl = this.el.shadowRoot.querySelector('.wcs-select-control');\n\n const stateMachine = Machine(\n SELECT_MACHINE_CONFIG,\n this.initMachineOptions()\n );\n // FIXME: type checking failed...\n // @ts-ignore\n this.stateService = interpret(stateMachine);\n\n if (this.multiple) {\n this.values = [];\n }\n\n this.stateService.start();\n if (this.optionsEl.querySelector('slot') === null) {\n this.replaceOptions_firefoxBefore63();\n this.listenDomUpdate_firefoxBefore63();\n }\n\n if (this.value !== undefined) {\n this.updateSelectedValue(this.value);\n }\n\n this.popper = this.createPopperInstance();\n\n // if the select is inside a wcs-form-field, we set an id to the wcs-label if present\n // the wcs-label element reference is kept to compute aria-label value during the rendering\n this.labelElement = findItemLabel(this.el);\n if (this.labelElement) {\n this.labelElement.id = this.selectId + \"-lbl\";\n }\n }\n\n private createPopperInstance() {\n return createPopper(this.controlEl, this.optionsEl, {\n placement: \"bottom\",\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 4] // we want 4px between select control and select options\n }\n }\n ]\n });\n }\n\n private emitChange(newValue: any): void {\n this.wcsChange.emit({\n value: newValue\n });\n }\n\n private replaceOptions_firefoxBefore63() {\n Array.from(this.el.querySelectorAll('wcs-select-option'))\n .forEach(option => {\n if (option.parentNode === this.el) {\n this.el.removeChild(option);\n this.optionsEl.appendChild(option);\n }\n });\n }\n\n private listenDomUpdate_firefoxBefore63() {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n this.replaceOptions_firefoxBefore63();\n }\n }\n });\n observer.observe(this.el, {childList: true});\n }\n \n componentWillRender(): Promise<void> | void {\n if (this.multiple) {\n this.options\n .forEach((opt: HTMLWcsSelectOptionElement) => opt.multiple = true);\n }\n }\n\n componentWillLoad(): Promise<void> | void {\n if (!isWcsSelectSize(this.size)) {\n console.warn(`Invalid size value for wcs-select : \"${this.size}\". Must be one of \"${WcsSelectSizeValue.join(', ')}\"`);\n this.size = \"m\"; // Default fallback value\n }\n \n // XXX : special case on this component for attribute inheritance\n // We only move attributes on the native input when autocomplete is true.\n // Otherwise, all attributes are on the Host, so we do not need to inherit those.\n if (this.autocomplete) {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, SELECT_INHERITED_ATTRS),\n };\n }\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n if(this.autocomplete === false) {\n setOrRemoveAttribute(this.el, attr, value);\n } else {\n setOrRemoveAttribute(this.autocompleteInput, attr, value);\n }\n }\n\n private get options(): HTMLWcsSelectOptionElement[] {\n const opts = this.el?.querySelectorAll('wcs-select-option');\n if (opts && opts.length !== 0) {\n return opts as any as HTMLWcsSelectOptionElement[];\n }\n return [];\n }\n\n private get notDisabledOptions(): HTMLWcsSelectOptionElement[] {\n const opts = this.el?.querySelectorAll('wcs-select-option:not([disabled]):not([aria-hidden])');\n if (opts && opts.length !== 0) {\n return opts as any as HTMLWcsSelectOptionElement[];\n }\n return [];\n }\n\n private initMachineOptions(): Partial<MachineOptions<any, SelectEvent>> {\n return {\n actions: {\n open: () => {\n if (!this.disabled) {\n this.expanded = true;\n this.focused = false;\n if(this.multiple === false && this.autocomplete && this.hasValue === false) {\n // If we open the select in single autocomplete mode, we update the autocomplete value at \n // the blur event so that the displayed value reflect the current select value. \n // Indeed, we have to tell the component to take the current filter state manually at the \n // opening (because the input event of the autocomplete field is not fired at this point).\n if (this.autocompleteValue && this.autocompleteValue !== '') {\n this.setAutocompleteValue(this.autocompleteValue);\n }\n }\n this.clearHighlightOnLastHighlightedOption();\n if (this.notDisabledOptions.length > 0) {\n this.lastFocusedOptionElement = this.lastModifiedOptionElement ?? this.notDisabledOptions[0];\n requestAnimationFrame(() => {\n this.autocomplete\n ? this.autocompleteInput?.focus()\n : this.lastFocusedOptionElement?.focus();\n });\n }\n }\n },\n close: (_, event: SelectEvent) => {\n if (event.type === 'CLOSE') {\n this.clearHighlightOnLastHighlightedOption();\n if (event.value?.shouldBlur) {\n this.focused = false;\n } else {\n if (this.autocomplete && event.value?.fromKeyboard) {\n // If we're in autocomplete mode, a keyboard event (e.g. escape) doesn't change the \n // focus (so this.el.focus() aren't called because the select was already focused)\n // but you still have to go back to the autocomplete input.\n this.focusAutocompleteInput();\n } else {\n // Otherwise, we focus the select element\n this.el.focus();\n }\n this.focused = true;\n }\n\n if (this.autocomplete && this.displayText && this.multiple === false) {\n this.setAutocompleteValue(this.displayText);\n }\n }\n this.expanded = false;\n },\n selectOption: (_, event) => {\n if (event.type === 'OPTION_SELECTED') {\n if (this.multiple) {\n this.handleOptionSelectedOnMultiple(event.value.option);\n } else {\n this.handleOptionSelectedOnSingle(event.value.option);\n this.stateService.send('CLOSE', {value: {fromKeyboard: event.value.fromKeyboard}});\n }\n\n if (this.autocomplete) {\n if (this.multiple) {\n requestAnimationFrame(() => {\n this.autocompleteInput.focus();\n })\n } else {\n // Emit the filter change immediately so that server-side filtering can refresh options.\n this.setAutocompleteValue(event.value.option.displayText);\n }\n }\n this.emitChange(this.value);\n }\n }\n },\n guards: {\n enabled: () => !this.disabled\n }\n };\n }\n\n private handleOptionSelectedOnMultiple(event: SelectOptionChosedEvent) {\n const index = this.values.findIndex(v => this.compareWith(v.value, event.value));\n if (index === -1) {\n // this will trigger the watch on value and update the values model\n this.value = [...this.values.map(v => v.value), event.value];\n } else {\n // this will trigger the watch on value and update the values model\n this.value = this.values.filter(v => !this.compareWith(v.value, event.value)).map(v => v.value);\n }\n }\n\n private handleOptionSelectedOnSingle(event: SelectOptionChosedEvent) {\n this.value = event.value;\n }\n\n disconnectedCallback() {\n this.stateService?.stop();\n }\n\n private get hasValue(): boolean {\n // TODO: change this behavior.\n return this.displayText !== undefined;\n }\n\n @Listen('mouseup')\n onMouseUp(event: MouseEvent) {\n const clickOnScroll = isElement(event.target)\n && (event.offsetX > event.target.clientWidth\n || event.offsetY > event.target.clientHeight // If the click il located bellow the component height the click happen in the overlay\n || event.offsetY < 0); // If the click is made above the component\n\n const clickOnRemoveChip = event.composedPath()\n .filter(x => {\n const el = (x as HTMLElement);\n return el.nodeName === 'svg' && el.classList.contains('chip');\n })\n .length > 0;\n\n if (!clickOnScroll && !clickOnRemoveChip) {\n this.stateService.send('CLICK');\n }\n }\n\n @Listen('click', {target: 'window'})\n onWindowClickEvent(event: MouseEvent) {\n const firstSelectInEventPath = event.composedPath().filter(x => (x as HTMLElement).nodeName === 'WCS-SELECT')[0];\n const clickOnCurrentSelect = firstSelectInEventPath === this.el;\n // TODO: Move this logic in the state machine\n // FIXME: Doesnt work with single + disabled option\n if (this.expanded && !clickOnCurrentSelect) {\n this.stateService.send({type: 'CLOSE', value: {shouldBlur: true, fromKeyboard: false}});\n }\n }\n\n @Listen('keydown')\n onKeyDown(_event: KeyboardEvent) {\n const currentState = this.stateService.getSnapshot().matches(\"closed\") ? 'closed' : 'opened';\n let type: 'autocomplete_unique' | 'autocomplete_multiple' | 'unique' | 'multiple';\n if (this.autocomplete) {\n type = this.multiple ? 'autocomplete_multiple' : 'autocomplete_unique';\n } else {\n type = this.multiple ? 'multiple' : 'unique';\n }\n const actionsFromKeyboardEvents: KeyboardEventAssociatedAction[] = getActionForKeyboardEvent(_event, currentState, type);\n \n // If we have at least one associated actions, we prevent the default behavior of the event. \n // Except if the action is a focus move (we have to handle the preventDefault behavior ourselves in the action implementation)\n if (actionsFromKeyboardEvents.length != 0 && actionsFromKeyboardEvents.filter(a => a.kind === 'MoveFocus').length === 0) {\n _event.preventDefault();\n }\n\n for (const actionFromKeyboardEvent of actionsFromKeyboardEvents) {\n this.doActionFromKeyboardEventAssociatedAction(actionFromKeyboardEvent, _event);\n }\n }\n\n doActionFromKeyboardEventAssociatedAction(actionFromKeyboardEvent: KeyboardEventAssociatedAction, event: KeyboardEvent) {\n switch (actionFromKeyboardEvent.kind) {\n case \"CloseSelect\":\n this.stateService.send({\n type: 'CLOSE',\n value: {shouldBlur: actionFromKeyboardEvent.shouldBlur, fromKeyboard: true}\n });\n break;\n case \"OpenSelect\":\n this.stateService.send('OPEN');\n break;\n case \"SelectOption\":\n switch (actionFromKeyboardEvent.target) {\n case \"next\":\n this.selectClosestOption('next');\n break;\n case \"previous\":\n this.selectClosestOption('previous');\n break;\n case \"first\":\n this.selectFirstOption();\n break;\n case \"last\":\n this.selectLastOption();\n break;\n case \"lastHighlighted\": {\n // We have to handle enterKey here because with autocomplete mode, a wcs-select-option\n // is only highlighted, therefore the event is not fired\n const indexToSelect = Array.from(this.notDisabledOptions).indexOf(this.lastHighlightedOptionElement);\n\n if (indexToSelect !== -1) {\n this.lastModifiedOptionElement = this.lastHighlightedOptionElement;\n this.selectOption(indexToSelect, true);\n }\n break;\n }\n }\n break;\n case \"ClearAutocompleteInput\":\n this.setAutocompleteValue('', false, false);\n break;\n case \"ClearHighlight\":\n this.clearHighlightOnLastHighlightedOption();\n break;\n case \"HighlightOption\":\n switch (actionFromKeyboardEvent.target) {\n case \"next\":\n this.highlightClosestOption('next');\n break;\n case \"previous\":\n this.highlightClosestOption('previous');\n break;\n case \"first\":\n this.highlightFirstOption();\n break;\n case \"last\":\n this.highlightLastOption();\n break;\n default:\n break;\n }\n break;\n case \"FocusOption\":\n switch (actionFromKeyboardEvent.target) {\n case \"next\":\n this.focusClosestOption('next');\n break;\n case \"previous\":\n this.focusClosestOption('previous')\n break;\n case \"first\":\n this.focusFirstOption()\n break;\n case \"last\":\n this.focusLastOption();\n break;\n case \"lastFocused\":\n if (this.lastFocusedOptionElement != null) {\n this.focusOption(Array.from(this.notDisabledOptions).indexOf(this.lastFocusedOptionElement));\n }\n break;\n default:\n break;\n }\n break;\n case \"MoveFocus\":\n switch (actionFromKeyboardEvent.target) {\n case \"previous\": {\n let elementToFocus: Element = this.el.previousElementSibling ?? this.el.parentElement;\n while (elementToFocus) {\n if (isFocusable(elementToFocus)) break;\n elementToFocus = elementToFocus.previousElementSibling ?? elementToFocus.parentElement;\n }\n if (elementToFocus) {\n event.preventDefault();\n (elementToFocus as HTMLElement).focus();\n }\n break;\n }\n default:\n break;\n }\n break;\n default:\n throw new Error(\"Internal error\");\n }\n }\n\n private getClosestActiveOptionIndexForState(direction: 'next' | 'previous', state: 'highlighted' | 'focused' | 'modified'): number | 'nothing' {\n let concernedOption: HTMLWcsSelectOptionElement | null;\n switch (state) {\n case 'focused':\n concernedOption = this.lastFocusedOptionElement;\n break;\n case 'modified':\n concernedOption = this.lastModifiedOptionElement;\n break;\n case 'highlighted':\n concernedOption = this.lastHighlightedOptionElement;\n break;\n default:\n concernedOption = null;\n }\n let currentIndex = Array.from(this.notDisabledOptions).indexOf(concernedOption);\n\n const MIN_INDEX = 0;\n const MAX_INDEX = this.notDisabledOptions.length - 1;\n\n if (direction === 'next' && currentIndex < MAX_INDEX) {\n currentIndex++;\n } else if (direction === 'previous' && currentIndex > MIN_INDEX) {\n currentIndex--;\n } else {\n if (!this.autocomplete)\n return 'nothing';\n\n // Used to scroll options infinitely with keyboard (autocomplete mode only)\n if (direction === 'next' && currentIndex >= MAX_INDEX) {\n currentIndex = 0;\n }\n if (direction === 'previous' && currentIndex === MIN_INDEX) {\n currentIndex = MAX_INDEX;\n }\n }\n return currentIndex;\n }\n\n /**\n * Selects the non-disabled option with the index passed as a parameter.\n * The method sends an event to the state machine (the same as when clicking on an option with the mouse)\n * @param indexToSelect Option index within non-deactivated options list\n * @param fromKeyboard\n * @private\n */\n private selectOption(indexToSelect: number, fromKeyboard = false) {\n const optionToSelect = this.notDisabledOptions[indexToSelect];\n\n if (!optionToSelect) return;\n\n this.sendOptionSelectedToStateMachine({\n source: optionToSelect,\n value: optionToSelect.value,\n displayText: optionToSelect.innerText\n }, fromKeyboard);\n }\n\n private selectClosestOption(direction: 'next' | 'previous'): void {\n const indexToSelect = this.getClosestActiveOptionIndexForState(direction, 'modified');\n if (indexToSelect === 'nothing') return;\n this.selectOption(indexToSelect, true);\n }\n\n private selectFirstOption() {\n if (this.notDisabledOptions.length < 1) {\n return;\n }\n\n this.selectOption(0, true);\n }\n\n private selectLastOption() {\n if (this.notDisabledOptions.length < 1) {\n return;\n }\n\n this.selectOption(this.notDisabledOptions.length - 1, true);\n }\n\n private focusOption(indexToFocus: number) {\n this.lastFocusedOptionElement = this.notDisabledOptions[indexToFocus];\n this.lastFocusedOptionElement?.focus();\n this.el.setAttribute(\"aria-activedescendant\", this.lastFocusedOptionElement.id);\n }\n\n private focusClosestOption(direction: 'next' | 'previous'): void {\n const indexToFocus = this.getClosestActiveOptionIndexForState(direction, 'focused');\n if (indexToFocus === 'nothing') return;\n\n this.focusOption(indexToFocus);\n }\n\n private focusFirstOption() {\n this.focusOption(0);\n }\n\n private focusLastOption() {\n this.focusOption(this.notDisabledOptions.length - 1);\n }\n\n @Listen('wcsSelectOptionClick')\n selectedOptionChanged(event: CustomEvent<SelectOptionChosedEvent>) {\n this.sendOptionSelectedToStateMachine(event.detail);\n }\n\n sendOptionSelectedToStateMachine(event: SelectOptionChosedEvent, fromKeyboard = false) {\n this.stateService.send({type: 'OPTION_SELECTED', value: {option: event, fromKeyboard}});\n }\n\n onSlotchange() {\n if (!this.serverMode || (this.autocomplete && this.displayText === this.autocompleteValue)) {\n // We call updateSelectedValue to update the selected options when the slot changes to keep the selected options in sync with the current value.\n // This also update the displayText value according to the options data.\n // Finally, this update the internal models for multiple mode and handle the server mode correctly.\n this.updateSelectedValue(this.value, false, false);\n } else {\n this.syncOptionsElementsStateWithCurrentSelectedValue();\n }\n\n // Server-mode only : \"no result\" slot should be visible dynamically if no option is present in the slot\n if (this.autocomplete && this.serverMode) {\n this.showNoResultFoundLabel = this.options.length < 1;\n }\n\n if (this.multiple) {\n this.options\n .forEach((opt: HTMLWcsSelectOptionElement) => opt.multiple = true);\n }\n }\n\n /**\n * This method only affect the option's selected state\n * \n * Set the selected state of each option to match the current selected value of the select\n */\n private syncOptionsElementsStateWithCurrentSelectedValue() {\n this.options.forEach((opt: HTMLWcsSelectOptionElement) => {\n const isSelected = this.compareWith(opt.value, this.value);\n opt.selected = isSelected;\n });\n }\n\n removeChip(v: SelectOptionValue) {\n this.options\n .forEach(opt => {\n if (opt.value === v.value) {\n this.sendOptionSelectedToStateMachine({\n ...v,\n source: opt\n });\n }\n });\n }\n\n //region Autocomplete mode\n\n private highlightOption(indexToHighlight: number) {\n this.clearHighlightOnLastHighlightedOption();\n this.lastHighlightedOptionElement = this.notDisabledOptions[indexToHighlight];\n if (this.lastHighlightedOptionElement) {\n this.lastHighlightedOptionElement.highlighted = true;\n this.autocompleteInput.setAttribute(\"aria-activedescendant\", this.lastHighlightedOptionElement.id);\n requestAnimationFrame(() => {\n this.lastHighlightedOptionElement.scrollIntoView({block: \"nearest\", inline: \"nearest\"});\n })\n }\n }\n\n private highlightFirstOption() {\n this.highlightOption(0);\n }\n\n private highlightLastOption() {\n this.highlightOption(this.notDisabledOptions.length - 1);\n }\n\n private highlightClosestOption(direction: 'next' | 'previous'): void {\n const indexToHighlight = this.getClosestActiveOptionIndexForState(direction, 'highlighted');\n if (indexToHighlight === 'nothing') return;\n\n this.highlightOption(indexToHighlight);\n }\n\n /**\n * This method removes the highlight that applies to the last highlighted option if any.\n * This is used only for accessibility of autocomplete mode.\n * @private\n */\n private clearHighlightOnLastHighlightedOption() {\n if (this.lastHighlightedOptionElement) {\n this.lastHighlightedOptionElement.highlighted = false;\n this.lastHighlightedOptionElement = null;\n }\n }\n\n private onAutocompleteInputEvent(e: InputEvent) {\n const filter = this.autocompleteInput.value ?? '';\n\n this.setAutocompleteValue(filter, false, true); // fromUserInteraction = true\n // Avoid the inputEvent event to bubble and be emitted, we rather use wcsFilterChange in this case :\n e.stopPropagation();\n\n }\n\n /**\n * Set the autocomplete value and open the select if needed.\n * @param filter - The new filter value\n * @param isReset - If true, the filter is reset and the select is closed\n * @param fromUserInteraction - If true, the change comes from user interaction (typing), if false it's programmatic\n * @param shouldEmitFilterChangeEvent\n * @private\n */\n private setAutocompleteValue(filter: string, isReset = false, fromUserInteraction = false, shouldEmitFilterChangeEvent = true): void {\n this.clearHighlightOnLastHighlightedOption();\n const newValueIsDifferentFromLastModifiedOption = this.lastModifiedOptionElement == null || this.lastModifiedOptionElement?.textContent !== this.autocompleteValue;\n // Only open the select automatically when the change comes from user interaction\n if (!this.expanded && newValueIsDifferentFromLastModifiedOption && !isReset && fromUserInteraction) {\n this.open(); \n }\n\n // Prevents client-side filtering logic from being applied when serverMode is enabled.\n if (!this.serverMode) {\n if (filter.length) {\n const [matchingOptions, optionsToHide] = [[], []];\n const filteringFunction: WcsSelectFilterFn = this.filterFn ?? WcsDefaultSelectFilterFn;\n this.options.forEach((optionEl: HTMLWcsSelectOptionElement) =>\n (filteringFunction(optionEl, filter) ? matchingOptions : optionsToHide).push(optionEl)\n );\n\n this.showNoResultFoundLabel = matchingOptions.length === 0;\n matchingOptions.forEach(o => {\n o.hidden = false;\n o.removeAttribute(\"aria-hidden\");\n });\n optionsToHide.forEach(o => {\n o.hidden = true;\n o.setAttribute(\"aria-hidden\", \"true\");\n });\n } else {\n this.showNoResultFoundLabel = false;\n this.options.forEach(o => {\n o.hidden = false;\n o.removeAttribute(\"aria-hidden\");\n });\n }\n }\n\n const newAutocompleteValue = filter ?? '';\n const valueHasChanged = this.autocompleteValue !== newAutocompleteValue;\n\n if (valueHasChanged) {\n this.autocompleteValue = newAutocompleteValue;\n }\n\n if (shouldEmitFilterChangeEvent && valueHasChanged) {\n this.wcsFilterChange.emit({\n value: filter,\n });\n }\n }\n\n @Listen('focus')\n onFocus(event: FocusEvent) {\n if (this.autocomplete) {\n this.focusAutocompleteInput();\n }\n this.wcsFocus.emit(event);\n }\n\n private focusAutocompleteInput(): void {\n this.autocompleteInput?.focus();\n }\n\n //endregion\n\n @Listen('blur', { capture: true })\n onBlur(event: FocusEvent) {\n // Avoid emitting a wcsBlur event when the relatedTarget of the blur event is a child or the select itself\n const target = event.relatedTarget as HTMLElement;\n if (this.el.contains(target)) {\n return;\n }\n \n this.wcsBlur.emit(event);\n }\n\n componentDidRender() {\n this.popper?.update();\n }\n\n private focusedAttributes() {\n return !this.disabled ? { tabIndex: 0 } : {};\n }\n\n render() {\n const ariaLabelValue = `${this.labelElement ? this.labelElement.innerText : ''} ${this.hasValue ? this.displayText : ''}`.trimEnd();\n const noResultContainerId = 'no-result-container';\n \n return (\n <Host class={this.expanded ? 'expanded ' : ''}\n overlayDirection={this.overlayDirection}\n {...this.focusedAttributes()}\n role={!this.autocomplete ? \"combobox\" : null}\n aria-haspopup={!this.autocomplete ? \"listbox\" : null}\n aria-owns={!this.autocomplete ? this.optionsId : null}\n aria-controls={!this.autocomplete ? this.optionsId : null}\n aria-disabled={!this.autocomplete ? (this.disabled ? 'true' : null) : null}\n aria-required={!this.autocomplete ? (this.required ? 'true' : 'false') : null}\n aria-expanded={!this.autocomplete ? (this.expanded ? 'true' : 'false') : null}\n aria-multiselectable={!this.autocomplete ? (this.multiple ? 'true' : 'false') : null}\n aria-label={!this.autocomplete ? ariaLabelValue : null}>\n <div class=\"wcs-select-control\">\n <div class=\"wcs-select-value-container\">\n {this.hasValue\n ?\n (this.chips ?\n this.values.map((option: SelectOptionValue) =>\n <SelectChips disabled={this.disabled} option={option}\n onRemove={this.removeChip.bind(this)}/>\n )\n : (!this.autocomplete || this.autocomplete && this.multiple) &&\n <label class=\"wcs-select-value\">{this.displayText}</label>)\n : !this.autocomplete && <label class=\"wcs-select-placeholder\">{this.placeholder}</label>\n }\n {this.autocomplete && <input class=\"autocomplete-field\"\n value={this.autocompleteValue}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-label={ariaLabelValue}\n aria-describedby={noResultContainerId}\n aria-disabled={this.disabled ? 'true' : null}\n aria-expanded={this.expanded ? 'true' : 'false'}\n aria-controls={this.optionsId}\n aria-owns={this.optionsId}\n aria-multiselectable={this.multiple ? 'true' : 'false'}\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n disabled={this.disabled}\n required={this.required}\n placeholder={this.values?.length ? null : this.placeholder}\n onInput={(e) => this.onAutocompleteInputEvent(e)}\n ref={el => this.autocompleteInput = el}\n {...this.inheritedAttributes}/>\n }\n </div>\n <SelectArrow up={this.expanded}/>\n </div>\n <div class=\"wcs-select-options\" id={this.optionsId} role=\"listbox\">\n <slot name=\"options\" onSlotchange={this.onSlotchange.bind(this)}/>\n {(this.autocomplete && this.showNoResultFoundLabel) &&\n <div role=\"alert\" id={noResultContainerId} class=\"noresult-container\">\n <slot name=\"filter-no-result\">\n <span>Aucun résultat</span>\n </slot>\n </div>\n }\n </div>\n </Host>\n );\n }\n}\n\nlet selectIds = 0;\n"],"mappings":"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"}
|