q2-tecton-elements 1.49.2 → 1.50.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/dist/cjs/click-elsewhere_2.cjs.entry.js +2 -2
- package/dist/cjs/{index-42fcd170.js → index-43010ce4.js} +1 -1
- package/dist/cjs/{index-42fcd170.js.map → index-43010ce4.js.map} +1 -1
- package/dist/cjs/index-64d8b839.js +1580 -0
- package/dist/cjs/index-64d8b839.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +5 -5
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
- package/dist/cjs/{q2-input.cjs.entry.js → q2-badge_7.cjs.entry.js} +1284 -3
- package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -0
- package/dist/cjs/q2-calendar.cjs.entry.js +3 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
- package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +131 -149
- package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +3 -3
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +3 -3
- package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/q2-currency.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +62 -2
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-detail.cjs.entry.js +2 -2
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +11 -13
- package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +62 -58
- package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +4 -4
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-item.cjs.entry.js +3 -3
- package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-legend.cjs.entry.js +2 -2
- package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-list.cjs.entry.js +2 -2
- package/dist/cjs/q2-loc.cjs.entry.js +2 -2
- package/dist/cjs/q2-message.cjs.entry.js +2 -2
- package/dist/cjs/q2-month-picker.cjs.entry.js +3 -3
- package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
- package/dist/cjs/q2-option-list.cjs.entry.js +13 -11
- package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +3 -3
- package/dist/cjs/q2-pill.cjs.entry.js +95 -36
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
- package/dist/cjs/q2-radio.cjs.entry.js +2 -2
- package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
- package/dist/cjs/q2-section.cjs.entry.js +4 -4
- package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +19 -18
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
- package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
- package/dist/cjs/q2-tag.cjs.entry.js +33 -6
- package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +7 -8
- package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
- package/dist/{test/elements → collection/components/click-elsewhere/test}/click-elsewhere-test.e2e.js +1 -1
- package/dist/collection/components/click-elsewhere/test/click-elsewhere-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +5 -5
- package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-action-sheet/test}/q2-action-sheet-test.e2e.js +29 -1
- package/dist/collection/components/q2-action-sheet/test/q2-action-sheet-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
- package/dist/collection/components/q2-avatar/q2-avatar.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-avatar/test}/q2-avatar-test.e2e.js +1 -1
- package/dist/collection/components/q2-avatar/test/q2-avatar-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-badge/q2-badge.js +0 -1
- package/dist/collection/components/q2-badge/q2-badge.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-badge/test}/q2-badge-test.e2e.js +1 -1
- package/dist/collection/components/q2-badge/test/q2-badge-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-btn/q2-btn.css +1 -0
- package/dist/collection/components/q2-btn/q2-btn.js +3 -15
- package/dist/collection/components/q2-btn/q2-btn.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-btn/test}/q2-btn-test.e2e.js +36 -1
- package/dist/collection/components/q2-btn/test/q2-btn-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-calendar/q2-calendar-helpers.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-types.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar-validation.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js +1 -1
- package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
- package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
- package/dist/collection/components/q2-calendar/q2-month-picker.js.map +1 -1
- package/dist/{test/elements/q2-calendar → collection/components/q2-calendar/test}/helpers-test.e2e.js +2 -2
- package/dist/collection/components/q2-calendar/test/helpers-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-calendar/test}/q2-calendar-month-picker-test.e2e.js +1 -1
- package/dist/collection/components/q2-calendar/test/q2-calendar-month-picker-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-calendar/test}/q2-calendar-test.e2e.js +3 -3
- package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -0
- package/dist/{test/elements/q2-calendar → collection/components/q2-calendar/test}/validation-test.e2e.js +2 -2
- package/dist/collection/components/q2-calendar/test/validation-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-card/q2-card.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-card/test}/q2-card-test.e2e.js +1 -1
- package/dist/collection/components/q2-card/test/q2-card-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-carousel/q2-carousel.js +190 -164
- package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-carousel/test}/q2-carousel-test.e2e.js +175 -188
- package/dist/collection/components/q2-carousel/test/q2-carousel-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +5 -5
- package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-carousel-pane/test}/q2-carousel-pane-test.e2e.js +1 -1
- package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-carousel-pane/test}/q2-carousel-pane-test.spec.js +1 -1
- package/dist/collection/components/q2-carousel-pane/test/q2-carousel-pane-test.spec.js.map +1 -0
- package/dist/collection/components/q2-chart-area/q2-chart-area.js +20 -20
- package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-chart-area/test}/q2-chart-area-test.e2e.js +1 -1
- package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +20 -20
- package/dist/collection/components/q2-chart-bar/q2-chart-bar.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-chart-bar/test}/q2-chart-bar-test.e2e.js +1 -1
- package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +1 -1
- package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-chart-donut/test}/q2-chart-donut-test.e2e.js +1 -1
- package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-checkbox/q2-checkbox.js +1 -1
- package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-checkbox/test}/q2-checkbox-test.e2e.js +1 -1
- package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +1 -1
- package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-checkbox-group/test}/q2-checkbox-group-test.e2e.js +1 -1
- package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-currency/q2-currency.js +1 -1
- package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-currency/test}/q2-currency-test.e2e.js +2 -2
- package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-data-table/q2-data-table.js +240 -7
- package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-data-table/test}/q2-data-table-test.e2e.js +64 -2
- package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-detail/q2-detail.js +1 -1
- package/dist/collection/components/q2-detail/q2-detail.js.map +1 -1
- package/dist/{test/elements/q2-detail → collection/components/q2-detail/test}/q2-detail-test.e2e.js +3 -3
- package/dist/collection/components/q2-detail/test/q2-detail-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-dropdown/q2-dropdown.js +65 -57
- package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-dropdown/test}/q2-dropdown-test.e2e.js +165 -120
- package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +10 -12
- package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-dropdown-item/test}/q2-dropdown-item-test.e2e.js +5 -13
- package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-editable-field/q2-editable-field.js +3 -3
- package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-editable-field/test}/q2-editable-field-test.e2e.js +1 -4
- package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-icon/q2-icon-types.js.map +1 -1
- package/dist/collection/components/q2-icon/q2-icon.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-icon/test}/q2-icon-test.e2e.js +2 -2
- package/dist/collection/components/q2-icon/test/q2-icon-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-input/formatting/alpha.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/alphanumeric.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/credit-card.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/credit-card.spec.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/currency.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/generic.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/number.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/numeric.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/phone.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/ssn.js.map +1 -1
- package/dist/collection/components/q2-input/formatting/tin.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input-types.js.map +1 -1
- package/dist/collection/components/q2-input/q2-input.js +2 -2
- package/dist/collection/components/q2-input/q2-input.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-input/test}/q2-input-credit-card-test.e2e.js +1 -1
- package/dist/collection/components/q2-input/test/q2-input-credit-card-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-input/test}/q2-input-test.e2e.js +1 -1
- package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-item/q2-item.css +3 -3
- package/dist/collection/components/q2-item/q2-item.js +1 -1
- package/dist/collection/components/q2-item/q2-item.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-item/test}/q2-item-test.e2e.js +1 -1
- package/dist/collection/components/q2-item/test/q2-item-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-item/test}/q2-item-test.spec.js +1 -1
- package/dist/collection/components/q2-item/test/q2-item-test.spec.js.map +1 -0
- package/dist/collection/components/q2-legend/q2-legend.css +6 -6
- package/dist/collection/components/q2-legend/q2-legend.js +1 -1
- package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-legend/test}/q2-legend-test.e2e.js +1 -1
- package/dist/collection/components/q2-legend/test/q2-legend-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-legend/test}/q2-legend-test.spec.js +1 -1
- package/dist/collection/components/q2-legend/test/q2-legend-test.spec.js.map +1 -0
- package/dist/collection/components/q2-list/q2-list.js +1 -1
- package/dist/collection/components/q2-list/q2-list.js.map +1 -1
- package/dist/{test/elements/q2-detail → collection/components/q2-list/test}/q2-list-test.e2e.js +1 -1
- package/dist/collection/components/q2-list/test/q2-list-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-loading/q2-loading.js.map +1 -1
- package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js.map +1 -1
- package/dist/collection/components/q2-loading/skeleton/shapes.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-loading/test}/q2-loading-element-test.e2e.js +1 -1
- package/dist/collection/components/q2-loading/test/q2-loading-element-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-loading/test}/q2-loading-test.e2e.js +1 -1
- package/dist/collection/components/q2-loading/test/q2-loading-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-loc/q2-loc.js +1 -1
- package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-loc/test}/q2-loc-test.e2e.js +1 -1
- package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-message/q2-message.js +1 -1
- package/dist/collection/components/q2-message/q2-message.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-message/test}/q2-message-test.e2e.js +1 -1
- package/dist/collection/components/q2-message/test/q2-message-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
- package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-optgroup/test}/q2-optgroup-test.e2e.js +1 -1
- package/dist/collection/components/q2-optgroup/test/q2-optgroup-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-option/q2-option.js +1 -1
- package/dist/collection/components/q2-option/q2-option.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-option/test}/q2-option-test.e2e.js +1 -1
- package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-option-list/q2-option-list.js +15 -13
- package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-option-list/test}/q2-option-list-test.e2e.js +1 -1
- package/dist/collection/components/q2-option-list/test/q2-option-list-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-pagination/q2-pagination.js +2 -2
- package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-pagination/test}/q2-pagination-test.e2e.js +1 -1
- package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-pill/q2-pill.js +172 -37
- package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-pill/test}/q2-pill-test.e2e.js +484 -392
- package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-popover/q2-popover.js +1 -1
- package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-popover/test}/q2-popover-test.e2e.js +2 -2
- package/dist/collection/components/q2-popover/test/q2-popover-test.e2e.js.map +1 -0
- package/dist/{test/elements → collection/components/q2-popover/test}/q2-popover-test.spec.js +1 -1
- package/dist/collection/components/q2-popover/test/q2-popover-test.spec.js.map +1 -0
- package/dist/collection/components/q2-radio/q2-radio.js +1 -1
- package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-radio/test}/q2-radio-test.e2e.js +1 -1
- package/dist/collection/components/q2-radio/test/q2-radio-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-radio-group/q2-radio-group.js +1 -1
- package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-radio-group/test}/q2-radio-group-test.e2e.js +1 -1
- package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
- package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-relative-time/test}/q2-relative-time-test.e2e.js +2 -2
- package/dist/collection/components/q2-relative-time/test/q2-relative-time-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-section/q2-section.css +1 -1
- package/dist/collection/components/q2-section/q2-section.js +2 -2
- package/dist/collection/components/q2-section/q2-section.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-section/test}/q2-section-test.e2e.js +12 -7
- package/dist/collection/components/q2-section/test/q2-section-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-select/q2-select.js +18 -17
- package/dist/collection/components/q2-select/q2-select.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-select/test}/q2-select-test.e2e.js +20 -2
- package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
- package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-stepper/test}/q2-stepper-test.e2e.js +1 -1
- package/dist/collection/components/q2-stepper/test/q2-stepper-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -3
- package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-stepper-pane/test}/q2-stepper-pane-test.e2e.js +1 -1
- package/dist/collection/components/q2-stepper-pane/test/q2-stepper-pane-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-stepper-vertical/test}/q2-stepper-vertical-test.e2e.js +1 -1
- package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tab-container/q2-tab-container.js +21 -20
- package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-tab-container/test}/q2-tab-container-test.e2e.js +1 -1
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js +54 -0
- package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.spec.js.map +1 -0
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
- package/dist/collection/components/q2-tab-pane/q2-tab-pane.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-tab-pane/test}/q2-tab-pane-test.e2e.js +1 -1
- package/dist/collection/components/q2-tab-pane/test/q2-tab-pane-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tag/q2-tag.js +92 -6
- package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-tag/test}/q2-tag-test.e2e.js +40 -8
- package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
- package/dist/collection/components/q2-textarea/q2-textarea.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-textarea/test}/q2-textarea-test.e2e.js +1 -1
- package/dist/collection/components/q2-textarea/test/q2-textarea-test.e2e.js.map +1 -0
- package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
- package/dist/{test/elements → collection/components/q2-tooltip/test}/q2-tooltip-test.e2e.js +1 -1
- package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.e2e.js.map +1 -0
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane-types.js.map +1 -1
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
- package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js.map +1 -1
- package/dist/{test/elements → collection/components/tecton-tab-pane/test}/tecton-tab-pane-test.e2e.js +1 -1
- package/dist/collection/components/tecton-tab-pane/test/tecton-tab-pane-test.e2e.js.map +1 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/action-sheet.js.map +1 -1
- package/dist/collection/utils/charting.js.map +1 -1
- package/dist/{test → collection/utils}/helpers.js +1 -1
- package/dist/collection/utils/helpers.js.map +1 -0
- package/dist/collection/utils/index.js +9 -0
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/{test/utils → collection/utils/test}/action-sheet-test.e2e.js +1 -1
- package/dist/collection/utils/test/action-sheet-test.e2e.js.map +1 -0
- package/dist/{test/utils → collection/utils/test}/index.spec.js +1 -1
- package/dist/collection/utils/test/index.spec.js.map +1 -0
- package/dist/components/action-sheet.js +1 -1
- package/dist/components/index.js +0 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1355 -1
- package/dist/components/index2.js.map +1 -1
- package/dist/components/q2-action-sheet.js +5 -5
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-avatar2.js +1 -1
- package/dist/components/q2-badge2.js.map +1 -1
- package/dist/components/q2-btn2.js +6 -12
- package/dist/components/q2-btn2.js.map +1 -1
- package/dist/components/q2-calendar.js +1 -1
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-carousel-pane.js +2 -2
- package/dist/components/q2-carousel-pane.js.map +1 -1
- package/dist/components/q2-carousel.js +133 -154
- package/dist/components/q2-carousel.js.map +1 -1
- package/dist/components/q2-chart-area.js +3 -3
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-bar.js +4 -4
- package/dist/components/q2-chart-bar.js.map +1 -1
- package/dist/components/q2-chart-donut.js +1 -1
- package/dist/components/q2-checkbox-group.js +1 -1
- package/dist/components/q2-checkbox2.js +1 -1
- package/dist/components/q2-currency.js +1 -1
- package/dist/components/q2-data-table.js +68 -2
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-detail.js +1 -1
- package/dist/components/q2-dropdown-item2.js +10 -12
- package/dist/components/q2-dropdown-item2.js.map +1 -1
- package/dist/components/q2-dropdown.js +61 -57
- package/dist/components/q2-dropdown.js.map +1 -1
- package/dist/components/q2-editable-field.js +3 -3
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-input2.js +2 -2
- package/dist/components/q2-item.js +2 -2
- package/dist/components/q2-item.js.map +1 -1
- package/dist/components/q2-legend2.js +2 -2
- package/dist/components/q2-legend2.js.map +1 -1
- package/dist/components/q2-list.js +1 -1
- package/dist/components/q2-loc.js +1 -1
- package/dist/components/q2-message2.js +2 -2
- package/dist/components/q2-month-picker.js +2 -2
- package/dist/components/q2-optgroup2.js +1 -1
- package/dist/components/q2-option-list2.js +13 -11
- package/dist/components/q2-option-list2.js.map +1 -1
- package/dist/components/q2-option2.js +1 -1
- package/dist/components/q2-pagination.js +2 -2
- package/dist/components/q2-pill.js +100 -38
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-popover2.js +2 -2
- package/dist/components/q2-radio-group.js +1 -1
- package/dist/components/q2-radio.js +1 -1
- package/dist/components/q2-relative-time.js +1 -1
- package/dist/components/q2-section.js +3 -3
- package/dist/components/q2-section.js.map +1 -1
- package/dist/components/q2-select2.js +20 -19
- package/dist/components/q2-select2.js.map +1 -1
- package/dist/components/q2-stepper-pane.js +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-tab-container.js +21 -20
- package/dist/components/q2-tab-container.js.map +1 -1
- package/dist/components/q2-tab-pane.js +1 -1
- package/dist/components/q2-tag.js +38 -8
- package/dist/components/q2-tag.js.map +1 -1
- package/dist/components/q2-textarea.js +2 -2
- package/dist/components/tecton-tab-pane.js +2 -2
- package/dist/esm/{action-sheet-dd527168.js → action-sheet-e64cb6f7.js} +2 -2
- package/dist/esm/{action-sheet-dd527168.js.map → action-sheet-e64cb6f7.js.map} +1 -1
- package/dist/esm/click-elsewhere_2.entry.js +2 -2
- package/dist/esm/index-4a80972c.js +1556 -0
- package/dist/esm/index-4a80972c.js.map +1 -0
- package/dist/esm/{index-1c019b24.js → index-c6d74f10.js} +1 -1
- package/dist/esm/{index-1c019b24.js.map → index-c6d74f10.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +5 -5
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-avatar.entry.js +1 -1
- package/dist/esm/{q2-input.entry.js → q2-badge_7.entry.js} +1280 -5
- package/dist/esm/q2-badge_7.entry.js.map +1 -0
- package/dist/esm/q2-calendar.entry.js +3 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +3 -3
- package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
- package/dist/esm/q2-carousel.entry.js +131 -149
- package/dist/esm/q2-carousel.entry.js.map +1 -1
- package/dist/esm/q2-chart-area.entry.js +3 -3
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +3 -3
- package/dist/esm/q2-chart-bar.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +2 -2
- package/dist/esm/q2-checkbox-group.entry.js +2 -2
- package/dist/esm/q2-checkbox.entry.js +2 -2
- package/dist/esm/q2-currency.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +62 -2
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-detail.entry.js +2 -2
- package/dist/esm/q2-dropdown-item.entry.js +11 -13
- package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
- package/dist/esm/q2-dropdown.entry.js +62 -58
- package/dist/esm/q2-dropdown.entry.js.map +1 -1
- package/dist/esm/q2-editable-field.entry.js +4 -4
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-item.entry.js +3 -3
- package/dist/esm/q2-item.entry.js.map +1 -1
- package/dist/esm/q2-legend.entry.js +2 -2
- package/dist/esm/q2-legend.entry.js.map +1 -1
- package/dist/esm/q2-list.entry.js +2 -2
- package/dist/esm/q2-loc.entry.js +2 -2
- package/dist/esm/q2-message.entry.js +2 -2
- package/dist/esm/q2-month-picker.entry.js +3 -3
- package/dist/esm/q2-optgroup.entry.js +2 -2
- package/dist/esm/q2-option-list.entry.js +13 -11
- package/dist/esm/q2-option-list.entry.js.map +1 -1
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +3 -3
- package/dist/esm/q2-pill.entry.js +96 -37
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +2 -2
- package/dist/esm/q2-radio.entry.js +2 -2
- package/dist/esm/q2-relative-time.entry.js +3 -3
- package/dist/esm/q2-section.entry.js +4 -4
- package/dist/esm/q2-section.entry.js.map +1 -1
- package/dist/esm/q2-select.entry.js +20 -19
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +2 -2
- package/dist/esm/q2-stepper-vertical.entry.js +2 -2
- package/dist/esm/q2-stepper.entry.js +2 -2
- package/dist/esm/q2-tag.entry.js +34 -7
- package/dist/esm/q2-tag.entry.js.map +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +2 -2
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/esm/tecton-tab-pane.entry.js +2 -2
- package/dist/q2-tecton-elements/{p-da711c59.entry.js → p-072c5877.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-f6358905.entry.js → p-074ae80c.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-0a1dff75.entry.js +2 -0
- package/dist/q2-tecton-elements/p-0a1dff75.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-93680d12.entry.js → p-0a3a804a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-93680d12.entry.js.map → p-0a3a804a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/p-259b728a.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-77a763eb.entry.js.map → p-259b728a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js → p-2c26295e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js → p-2ca6d44f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-2bcb7e89.entry.js → p-2fcaf2d6.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-2fcaf2d6.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-0852e6fe.entry.js → p-34696e3f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-1e7fa870.entry.js → p-34856c71.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-34856c71.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-376a0589.entry.js +2 -0
- package/dist/q2-tecton-elements/p-376a0589.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-630613c7.entry.js → p-395904b4.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js +2 -0
- package/dist/q2-tecton-elements/p-3b0d3cd4.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-d8d9ba1f.entry.js → p-3c7be0bb.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-3c7be0bb.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-403bf3d4.entry.js +2 -0
- package/dist/q2-tecton-elements/{p-5037fa67.entry.js.map → p-403bf3d4.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-db79c056.entry.js → p-4116579f.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e0a6baea.entry.js → p-45407ecc.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js → p-58cafc0d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-4388e521.entry.js → p-5d936af5.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-6237c775.entry.js +2 -0
- package/dist/q2-tecton-elements/p-6237c775.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-a177d812.entry.js → p-661ed976.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-da0cacef.entry.js → p-6b7c53a8.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-6c933b14.entry.js → p-6e6d9793.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-be518818.js → p-721365be.js} +1 -1
- package/dist/q2-tecton-elements/{p-a8e7e591.entry.js → p-77272c4c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-793a453e.entry.js → p-77a0cc0c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-9c589ab3.entry.js → p-8111547c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-05b30f98.entry.js → p-8a4b106d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-8a4b106d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-9a1a4bc0.js +3 -0
- package/dist/q2-tecton-elements/p-9a1a4bc0.js.map +1 -0
- package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a7a0b8aa.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-aa57b657.entry.js +2 -0
- package/dist/q2-tecton-elements/p-aa57b657.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-ad998f71.entry.js +2 -0
- package/dist/q2-tecton-elements/p-ad998f71.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-e3ad770b.entry.js → p-adec9275.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-adf0a7c9.entry.js +2 -0
- package/dist/q2-tecton-elements/p-adf0a7c9.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-b72fd065.entry.js +2 -0
- package/dist/q2-tecton-elements/p-b72fd065.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-780a1d0e.js → p-b7554a79.js} +2 -2
- package/dist/q2-tecton-elements/{p-40df4468.entry.js → p-c0c658d1.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-baa2eaa9.entry.js → p-c81d299a.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-c81d299a.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-08176bd0.entry.js → p-cb3f48de.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-2810ba28.entry.js → p-ce4e6b41.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-76b98623.entry.js → p-cf32b5db.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-cf966a0f.entry.js +2 -0
- package/dist/q2-tecton-elements/p-cf966a0f.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-c5aac064.entry.js → p-d2e1631a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-c5aac064.entry.js.map → p-d2e1631a.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-2e6669a7.entry.js → p-dc77bf66.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js → p-fffb54e9.entry.js} +2 -2
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +60 -0
- package/dist/types/components/q2-btn/q2-btn.d.ts +1 -2
- package/dist/types/components/q2-calendar/q2-calendar.d.ts +323 -0
- package/dist/types/components/q2-carousel/q2-carousel.d.ts +36 -25
- package/dist/types/components/q2-carousel-pane/q2-carousel-pane.d.ts +3 -3
- package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +6 -6
- package/dist/types/components/q2-chart-bar/q2-chart-bar.d.ts +14 -14
- package/dist/types/components/q2-data-table/q2-data-table.d.ts +259 -0
- package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +129 -0
- package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +50 -0
- package/dist/types/components/q2-editable-field/q2-editable-field.d.ts +140 -0
- package/dist/types/components/q2-loading/skeleton/shapes.d.ts +1 -0
- package/dist/types/components/q2-optgroup/q2-optgroup.d.ts +1 -1
- package/dist/types/components/q2-option-list/q2-option-list.d.ts +99 -0
- package/dist/types/components/q2-pagination/q2-pagination.d.ts +60 -0
- package/dist/types/components/q2-pill/q2-pill.d.ts +128 -0
- package/dist/types/components/q2-select/q2-select.d.ts +232 -0
- package/dist/types/components/q2-stepper/q2-stepper.d.ts +52 -0
- package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +62 -0
- package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +5 -5
- package/dist/types/components/q2-tag/q2-tag.d.ts +63 -0
- package/dist/types/components.d.ts +77 -33
- package/dist/types/utils/action-sheet.d.ts +12 -0
- package/dist/types/{workspace/workspace/tecton-production_release_1.49.x/packages/q2-tecton-elements/.stencil/test → utils}/helpers.d.ts +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +8 -6
- package/dist/cjs/index-a93362ed.js +0 -225
- package/dist/cjs/index-a93362ed.js.map +0 -1
- package/dist/cjs/q2-badge.cjs.entry.js +0 -52
- package/dist/cjs/q2-badge.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +0 -237
- package/dist/cjs/q2-btn_2.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-icon.cjs.entry.js +0 -731
- package/dist/cjs/q2-icon.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-input.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +0 -263
- package/dist/cjs/q2-tab-container.cjs.entry.js.map +0 -1
- package/dist/cjs/q2-tab-pane.cjs.entry.js +0 -46
- package/dist/cjs/q2-tab-pane.cjs.entry.js.map +0 -1
- package/dist/cjs/slot-component.cjs.entry.js +0 -19
- package/dist/cjs/slot-component.cjs.entry.js.map +0 -1
- package/dist/components/slot-component.d.ts +0 -11
- package/dist/components/slot-component.js +0 -34
- package/dist/components/slot-component.js.map +0 -1
- package/dist/esm/index-3c5cd75e.js +0 -202
- package/dist/esm/index-3c5cd75e.js.map +0 -1
- package/dist/esm/q2-badge.entry.js +0 -48
- package/dist/esm/q2-badge.entry.js.map +0 -1
- package/dist/esm/q2-btn_2.entry.js +0 -232
- package/dist/esm/q2-btn_2.entry.js.map +0 -1
- package/dist/esm/q2-icon.entry.js +0 -727
- package/dist/esm/q2-icon.entry.js.map +0 -1
- package/dist/esm/q2-input.entry.js.map +0 -1
- package/dist/esm/q2-tab-container.entry.js +0 -259
- package/dist/esm/q2-tab-container.entry.js.map +0 -1
- package/dist/esm/q2-tab-pane.entry.js +0 -42
- package/dist/esm/q2-tab-pane.entry.js.map +0 -1
- package/dist/esm/slot-component.entry.js +0 -15
- package/dist/esm/slot-component.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-05b30f98.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-089a7a1e.entry.js +0 -2
- package/dist/q2-tecton-elements/p-089a7a1e.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-1e7fa870.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-25bfe0b2.entry.js +0 -2
- package/dist/q2-tecton-elements/p-25bfe0b2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2bcb7e89.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-333a41ca.entry.js +0 -2
- package/dist/q2-tecton-elements/p-333a41ca.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-4da4cb5d.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4da4cb5d.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-5037fa67.entry.js +0 -2
- package/dist/q2-tecton-elements/p-550881db.entry.js +0 -2
- package/dist/q2-tecton-elements/p-550881db.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-5775b02b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-5775b02b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-77a763eb.entry.js +0 -2
- package/dist/q2-tecton-elements/p-84190698.js +0 -2
- package/dist/q2-tecton-elements/p-84190698.js.map +0 -1
- package/dist/q2-tecton-elements/p-9e90a38a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9e90a38a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-9ecabc7a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-9ecabc7a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-a657277b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-a657277b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-b3322f94.entry.js +0 -2
- package/dist/q2-tecton-elements/p-b3322f94.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-baa2eaa9.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-c8b4f5f7.entry.js +0 -2
- package/dist/q2-tecton-elements/p-c8b4f5f7.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d2d3d95b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-d2d3d95b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d78669df.entry.js +0 -2
- package/dist/q2-tecton-elements/p-d78669df.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d8d9ba1f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-dbfab45b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-dbfab45b.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-e44560d9.entry.js +0 -2
- package/dist/q2-tecton-elements/p-e44560d9.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-ea7876eb.entry.js +0 -2
- package/dist/q2-tecton-elements/p-ea7876eb.entry.js.map +0 -1
- package/dist/test/elements/click-elsewhere-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-action-sheet-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-avatar-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-badge-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-btn-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar/helpers-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar/validation-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar-month-picker-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-calendar-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-card-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-carousel-pane-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-carousel-pane-test.spec.js.map +0 -1
- package/dist/test/elements/q2-carousel-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-currency-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-data-table-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-detail/q2-detail-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-detail/q2-list-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-detail/slot-component.js +0 -32
- package/dist/test/elements/q2-detail/slot-component.js.map +0 -1
- package/dist/test/elements/q2-dropdown-item-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-icon-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-input-credit-card-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-input-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-item-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-item-test.spec.js.map +0 -1
- package/dist/test/elements/q2-legend-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-legend-test.spec.js.map +0 -1
- package/dist/test/elements/q2-loading-element-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-loading-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-loc-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-message-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-optgroup-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-option-list-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-option-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-pagination-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-pill-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-popover-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-popover-test.spec.js.map +0 -1
- package/dist/test/elements/q2-radio-group-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-radio-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-relative-time-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-section-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-select-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-stepper-pane-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-stepper-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tab-pane-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tag-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-textarea-test.e2e.js.map +0 -1
- package/dist/test/elements/q2-tooltip-test.e2e.js.map +0 -1
- package/dist/test/elements/tecton-tab-pane-test.e2e.js.map +0 -1
- package/dist/test/helpers.js.map +0 -1
- package/dist/test/utils/action-sheet-test.e2e.js.map +0 -1
- package/dist/test/utils/index.spec.js.map +0 -1
- package/dist/types/workspace/workspace/tecton-production_release_1.49.x/packages/q2-tecton-elements/.stencil/test/elements/q2-detail/slot-component.d.ts +0 -4
- /package/dist/q2-tecton-elements/{p-da711c59.entry.js.map → p-072c5877.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f6358905.entry.js.map → p-074ae80c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-7b9a6bb7.entry.js.map → p-2c26295e.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-bbf9d36d.entry.js.map → p-2ca6d44f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-0852e6fe.entry.js.map → p-34696e3f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-630613c7.entry.js.map → p-395904b4.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-db79c056.entry.js.map → p-4116579f.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e0a6baea.entry.js.map → p-45407ecc.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ec8a0b64.entry.js.map → p-58cafc0d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4388e521.entry.js.map → p-5d936af5.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a177d812.entry.js.map → p-661ed976.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-da0cacef.entry.js.map → p-6b7c53a8.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6c933b14.entry.js.map → p-6e6d9793.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-be518818.js.map → p-721365be.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-a8e7e591.entry.js.map → p-77272c4c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-793a453e.entry.js.map → p-77a0cc0c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-9c589ab3.entry.js.map → p-8111547c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e3ad770b.entry.js.map → p-adec9275.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-780a1d0e.js.map → p-b7554a79.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-40df4468.entry.js.map → p-c0c658d1.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-08176bd0.entry.js.map → p-cb3f48de.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2810ba28.entry.js.map → p-ce4e6b41.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-76b98623.entry.js.map → p-cf32b5db.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2e6669a7.entry.js.map → p-dc77bf66.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-e4b8f4b3.entry.js.map → p-fffb54e9.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"q2-chart-area.js","mappings":"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","names":["graphic.updateProps","graphic.initProps","graphic.removeElement","graphic.Group","graphic.traverseElements","isPointNull","zrUtil.isNumber","zrUtil.map","zrUtil.each","graphic.LinearGradient","SymbolDraw","zrUtil.defaults","modelUtil.queryDataIndex","zrUtil.isFunction","graphic.Text","modelUtil.interpolateRawValues","LineView","layoutPoints","lerp","echarts.use","AriaComponent","LineChart","CanvasRenderer","UniversalTransition","GridComponent","TitleComponent","Q2ChartArea","echarts.init"],"sources":["../../node_modules/echarts/lib/chart/helper/Symbol.js","../../node_modules/echarts/lib/chart/helper/SymbolDraw.js","../../node_modules/echarts/lib/chart/line/LineSeries.js","../../node_modules/echarts/lib/chart/line/helper.js","../../node_modules/echarts/lib/chart/line/lineAnimationDiff.js","../../node_modules/echarts/lib/chart/line/poly.js","../../node_modules/echarts/lib/chart/line/LineView.js","../../node_modules/echarts/lib/layout/points.js","../../node_modules/echarts/lib/chart/line/install.js","../../node_modules/zrender/lib/tool/convertPath.js","../../node_modules/zrender/lib/tool/dividePath.js","../../node_modules/zrender/lib/tool/morphPath.js","../../node_modules/echarts/lib/animation/morphTransitionHelper.js","../../node_modules/echarts/lib/animation/universalTransition.js","src/components/q2-chart-area/q2-chart-area.scss?tag=q2-chart-area&encapsulation=shadow","src/components/q2-chart-area/q2-chart-area.tsx"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { createSymbol, normalizeSymbolOffset, normalizeSymbolSize } from '../../util/symbol.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { enterEmphasis, leaveEmphasis, toggleHoverEmphasis } from '../../util/states.js';\nimport { getDefaultLabel } from './labelHelper.js';\nimport { extend } from 'zrender/lib/core/util.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nvar Symbol = /** @class */function (_super) {\n __extends(Symbol, _super);\n function Symbol(data, idx, seriesScope, opts) {\n var _this = _super.call(this) || this;\n _this.updateData(data, idx, seriesScope, opts);\n return _this;\n }\n Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n // let symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n });\n // Rewrite drift method\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n };\n /**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(null, toLastFrame);\n };\n Symbol.prototype.getSymbolType = function () {\n return this._symbolType;\n };\n /**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n Symbol.prototype.getSymbolPath = function () {\n return this.childAt(0);\n };\n /**\n * Highlight symbol\n */\n Symbol.prototype.highlight = function () {\n enterEmphasis(this.childAt(0));\n };\n /**\n * Downplay symbol\n */\n Symbol.prototype.downplay = function () {\n leaveEmphasis(this.childAt(0));\n };\n /**\n * @param {number} zlevel\n * @param {number} z\n */\n Symbol.prototype.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n };\n Symbol.prototype.setDraggable = function (draggable, hasCursorOption) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = !hasCursorOption && draggable ? 'move' : symbolPath.cursor;\n };\n /**\n * Update symbol properties\n */\n Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = Symbol.getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n var disableAnimation = opts && opts.disableAnimation;\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n var target = {\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n };\n disableAnimation ? symbolPath.attr(target) : graphic.updateProps(symbolPath, target, seriesModel, idx);\n saveOldStyle(symbolPath);\n }\n this._updateCommon(data, idx, symbolSize, seriesScope, opts);\n if (isInit) {\n var symbolPath = this.childAt(0);\n if (!disableAnimation) {\n var target = {\n scaleX: this._sizeX,\n scaleY: this._sizeY,\n style: {\n // Always fadeIn. Because it has fadeOut animation when symbol is removed..\n opacity: symbolPath.style.opacity\n }\n };\n symbolPath.scaleX = symbolPath.scaleY = 0;\n symbolPath.style.opacity = 0;\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n }\n if (disableAnimation) {\n // Must stop leave transition manually if don't call initProps or updateProps.\n this.childAt(0).stopAnimation('leave');\n }\n };\n Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var emphasisItemStyle;\n var blurItemStyle;\n var selectItemStyle;\n var focus;\n var blurScope;\n var emphasisDisabled;\n var labelStatesModels;\n var hoverScale;\n var cursorStyle;\n if (seriesScope) {\n emphasisItemStyle = seriesScope.emphasisItemStyle;\n blurItemStyle = seriesScope.blurItemStyle;\n selectItemStyle = seriesScope.selectItemStyle;\n focus = seriesScope.focus;\n blurScope = seriesScope.blurScope;\n labelStatesModels = seriesScope.labelStatesModels;\n hoverScale = seriesScope.hoverScale;\n cursorStyle = seriesScope.cursorStyle;\n emphasisDisabled = seriesScope.emphasisDisabled;\n }\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\n blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n focus = emphasisModel.get('focus');\n blurScope = emphasisModel.get('blurScope');\n emphasisDisabled = emphasisModel.get('disabled');\n labelStatesModels = getLabelStatesModels(itemModel);\n hoverScale = emphasisModel.getShallow('scale');\n cursorStyle = itemModel.getShallow('cursor');\n }\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize);\n if (symbolOffset) {\n symbolPath.x = symbolOffset[0];\n symbolPath.y = symbolOffset[1];\n }\n cursorStyle && symbolPath.attr('cursor', cursorStyle);\n var symbolStyle = data.getItemVisual(idx, 'style');\n var visualColor = symbolStyle.fill;\n if (symbolPath instanceof ZRImage) {\n var pathStyle = symbolPath.style;\n symbolPath.useStyle(extend({\n // TODO other properties like x, y ?\n image: pathStyle.image,\n x: pathStyle.x,\n y: pathStyle.y,\n width: pathStyle.width,\n height: pathStyle.height\n }, symbolStyle));\n } else {\n if (symbolPath.__isEmptyBrush) {\n // fill and stroke will be swapped if it's empty.\n // So we cloned a new style to avoid it affecting the original style in visual storage.\n // TODO Better implementation. No empty logic!\n symbolPath.useStyle(extend({}, symbolStyle));\n } else {\n symbolPath.useStyle(symbolStyle);\n }\n // Disable decal because symbol scale will been applied on the decal.\n symbolPath.style.decal = null;\n symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\n symbolPath.style.strokeNoScale = true;\n }\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = this._z2;\n if (liftZ != null) {\n if (z2Origin == null) {\n this._z2 = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n this._z2 = null;\n }\n var useNameLabel = opts && opts.useNameLabel;\n setLabelStyle(symbolPath, labelStatesModels, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n inheritColor: visualColor,\n defaultOpacity: symbolStyle.opacity\n });\n // Do not execute util needed.\n function getLabelDefaultText(idx) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n this._sizeX = symbolSize[0] / 2;\n this._sizeY = symbolSize[1] / 2;\n var emphasisState = symbolPath.ensureState('emphasis');\n emphasisState.style = emphasisItemStyle;\n symbolPath.ensureState('select').style = selectItemStyle;\n symbolPath.ensureState('blur').style = blurItemStyle;\n // null / undefined / true means to use default strategy.\n // 0 / false / negative number / NaN / Infinity means no scale.\n var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY)\n // PENDING: restrict hoverScale > 1? It seems unreasonable to scale down\n : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1;\n // always set scale to allow resetting\n emphasisState.scaleX = this._sizeX * scaleRatio;\n emphasisState.scaleY = this._sizeY * scaleRatio;\n this.setSymbolScale(1);\n toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n };\n Symbol.prototype.setSymbolScale = function (scale) {\n this.scaleX = this.scaleY = scale;\n };\n Symbol.prototype.fadeOut = function (cb, seriesModel, opt) {\n var symbolPath = this.childAt(0);\n var dataIndex = getECData(this).dataIndex;\n var animationOpt = opt && opt.animation;\n // Avoid mistaken hover when fading out\n this.silent = symbolPath.silent = true;\n // Not show text when animating\n if (opt && opt.fadeLabel) {\n var textContent = symbolPath.getTextContent();\n if (textContent) {\n graphic.removeElement(textContent, {\n style: {\n opacity: 0\n }\n }, seriesModel, {\n dataIndex: dataIndex,\n removeOpt: animationOpt,\n cb: function () {\n symbolPath.removeTextContent();\n }\n });\n }\n } else {\n symbolPath.removeTextContent();\n }\n graphic.removeElement(symbolPath, {\n style: {\n opacity: 0\n },\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: dataIndex,\n cb: cb,\n removeOpt: animationOpt\n });\n };\n Symbol.getSymbolSize = function (data, idx) {\n return normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n };\n return Symbol;\n}(graphic.Group);\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\nexport default Symbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as graphic from '../../util/graphic.js';\nimport SymbolClz from './Symbol.js';\nimport { isObject } from 'zrender/lib/core/util.js';\nimport { getLabelStatesModels } from '../../label/labelStyle.js';\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx))\n // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n return opt || {};\n}\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n var emphasisModel = seriesModel.getModel('emphasis');\n return {\n emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\n blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\n selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\n focus: emphasisModel.get('focus'),\n blurScope: emphasisModel.get('blurScope'),\n emphasisDisabled: emphasisModel.get('disabled'),\n hoverScale: emphasisModel.get('scale'),\n labelStatesModels: getLabelStatesModels(seriesModel),\n cursorStyle: seriesModel.get('cursor')\n };\n}\nvar SymbolDraw = /** @class */function () {\n function SymbolDraw(SymbolCtor) {\n this.group = new graphic.Group();\n this._SymbolCtor = SymbolCtor || SymbolClz;\n }\n /**\n * Update symbols draw by new data\n */\n SymbolDraw.prototype.updateData = function (data, opt) {\n // Remove progressive els.\n this._progressiveEls = null;\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._SymbolCtor;\n var disableAnimation = opt.disableAnimation;\n var seriesScope = makeSeriesScope(data);\n var symbolUpdateOpt = {\n disableAnimation: disableAnimation\n };\n var getSymbolPoint = opt.getSymbolPoint || function (idx) {\n return data.getItemLayout(idx);\n };\n // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n if (!oldData) {\n group.removeAll();\n }\n data.diff(oldData).add(function (newIdx) {\n var point = getSymbolPoint(newIdx);\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = getSymbolPoint(newIdx);\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n var newSymbolType = data.getItemVisual(newIdx, 'symbol') || 'circle';\n var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType();\n if (!symbolEl\n // Create a new if symbol type changed.\n || oldSymbolType && oldSymbolType !== newSymbolType) {\n group.remove(symbolEl);\n symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\n var target = {\n x: point[0],\n y: point[1]\n };\n disableAnimation ? symbolEl.attr(target) : graphic.updateProps(symbolEl, target, seriesModel);\n }\n // Add back\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n }, seriesModel);\n }).execute();\n this._getSymbolPoint = getSymbolPoint;\n this._data = data;\n };\n ;\n SymbolDraw.prototype.updateLayout = function () {\n var _this = this;\n var data = this._data;\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = _this._getSymbolPoint(idx);\n el.setPosition(point);\n el.markRedraw();\n });\n }\n };\n ;\n SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n };\n ;\n /**\n * Update symbols draw by new data\n */\n SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\n // Clear\n this._progressiveEls = [];\n opt = normalizeUpdateOpt(opt);\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.ensureState('emphasis').hoverLayer = true;\n }\n }\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._SymbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.setPosition(point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n this._progressiveEls.push(el);\n }\n }\n };\n ;\n SymbolDraw.prototype.eachRendered = function (cb) {\n graphic.traverseElements(this._progressiveEls || this.group, cb);\n };\n SymbolDraw.prototype.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data;\n // Incremental model do not have this._data.\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n }, data.hostModel);\n });\n } else {\n group.removeAll();\n }\n };\n ;\n return SymbolDraw;\n}();\nexport default SymbolDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesData from '../helper/createSeriesData.js';\nimport SeriesModel from '../../model/Series.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { Group } from '../../util/graphic.js';\nvar LineSeriesModel = /** @class */function (_super) {\n __extends(LineSeriesModel, _super);\n function LineSeriesModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = LineSeriesModel.type;\n _this.hasSymbolVisual = true;\n return _this;\n }\n LineSeriesModel.prototype.getInitialData = function (option) {\n if (process.env.NODE_ENV !== 'production') {\n var coordSys = option.coordinateSystem;\n if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\n throw new Error('Line not support coordinateSystem besides cartesian and polar');\n }\n }\n return createSeriesData(null, this, {\n useEncodeDefaulter: true\n });\n };\n LineSeriesModel.prototype.getLegendIcon = function (opt) {\n var group = new Group();\n var line = createSymbol('line', 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false);\n group.add(line);\n line.setStyle(opt.lineStyle);\n var visualType = this.getData().getVisual('symbol');\n var visualRotate = this.getData().getVisual('symbolRotate');\n var symbolType = visualType === 'none' ? 'circle' : visualType;\n // Symbol size is 80% when there is a line\n var size = opt.itemHeight * 0.8;\n var symbol = createSymbol(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill);\n group.add(symbol);\n symbol.setStyle(opt.itemStyle);\n var symbolRotate = opt.iconRotate === 'inherit' ? visualRotate : opt.iconRotate || 0;\n symbol.rotation = symbolRotate * Math.PI / 180;\n symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);\n if (symbolType.indexOf('empty') > -1) {\n symbol.style.stroke = symbol.style.fill;\n symbol.style.fill = '#fff';\n symbol.style.lineWidth = 2;\n }\n return group;\n };\n LineSeriesModel.type = 'series.line';\n LineSeriesModel.dependencies = ['grid', 'polar'];\n LineSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 3,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n clip: true,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n endLabel: {\n show: false,\n valueAnimation: true,\n distance: 8\n },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n emphasis: {\n scale: true\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity,\n universalTransition: {\n divideShape: 'clone'\n },\n triggerLineEvent: false\n };\n return LineSeriesModel;\n}(SeriesModel);\nexport default LineSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isDimensionStacked } from '../../data/helper/dataStackHelper.js';\nimport { isNumber, map } from 'zrender/lib/core/util.js';\nexport function prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked = false;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n if (isDimensionStacked(data, dims[0] /* , dims[1] */)) {\n // jshint ignore:line\n stacked = true;\n dims[0] = stackResultDim;\n }\n if (isDimensionStacked(data, dims[1] /* , dims[0] */)) {\n // jshint ignore:line\n stacked = true;\n dims[1] = stackResultDim;\n }\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n }\n // If origin is specified as a number, use it as\n // valueStart directly\n else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {\n valueStart = valueOrigin;\n }\n // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n }\n // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n }\n // If is one positive, and one negative, onZero shall be true\n }\n\n return valueStart;\n}\nexport function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\nexport default function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData);\n // let newIdList = newData.mapArray(newData.getId);\n // let oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n var currPoints = [];\n var nextPoints = [];\n // Points for stacking base line\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n // const oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n var oldPoints = oldData.getLayout('points') || [];\n var newPoints = newData.getLayout('points') || [];\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true;\n var oldIdx2 = void 0;\n var newIdx2 = void 0;\n // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n switch (diffItem.cmd) {\n case '=':\n oldIdx2 = diffItem.idx * 2;\n newIdx2 = diffItem.idx1 * 2;\n var currentX = oldPoints[oldIdx2];\n var currentY = oldPoints[oldIdx2 + 1];\n var nextX = newPoints[newIdx2];\n var nextY = newPoints[newIdx2 + 1];\n // If previous data is NaN, use next point directly\n if (isNaN(currentX) || isNaN(currentY)) {\n currentX = nextX;\n currentY = nextY;\n }\n currPoints.push(currentX, currentY);\n nextPoints.push(nextX, nextY);\n currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n case '+':\n var newIdx = diffItem.idx;\n var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\n var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]);\n newIdx2 = newIdx * 2;\n currPoints.push(oldPt[0], oldPt[1]);\n nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\n var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\n currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n rawIndices.push(newData.getRawIndex(newIdx));\n break;\n case '-':\n pointAdded = false;\n }\n // Original indices\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n }\n // Diff result may be crossed if all items are changed\n // Sort by data index\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var len = currPoints.length;\n var sortedCurrPoints = createFloat32Array(len);\n var sortedNextPoints = createFloat32Array(len);\n var sortedCurrStackedPoints = createFloat32Array(len);\n var sortedNextStackedPoints = createFloat32Array(len);\n var sortedStatus = [];\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n var i2 = i * 2;\n var idx2 = idx * 2;\n sortedCurrPoints[i2] = currPoints[idx2];\n sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\n sortedNextPoints[i2] = nextPoints[idx2];\n sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\n sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\n sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\n sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\n sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\n sortedStatus[i] = status[idx];\n }\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n// Poly path support NaN point\nimport Path from 'zrender/lib/graphic/Path.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { cubicRootAt, cubicAt } from 'zrender/lib/core/curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nfunction isPointNull(x, y) {\n return isNaN(x) || isNaN(y);\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\n var prevX;\n var prevY;\n var cpx0;\n var cpy0;\n var cpx1;\n var cpy1;\n var idx = start;\n var k = 0;\n for (; k < segLen; k++) {\n var x = points[idx * 2];\n var y = points[idx * 2 + 1];\n if (idx >= allLen || idx < 0) {\n break;\n }\n if (isPointNull(x, y)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n break;\n }\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\n cpx0 = x;\n cpy0 = y;\n } else {\n var dx = x - prevX;\n var dy = y - prevY;\n // Ignore tiny segment.\n if (dx * dx + dy * dy < 0.5) {\n idx += dir;\n continue;\n }\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextX = points[nextIdx * 2];\n var nextY = points[nextIdx * 2 + 1];\n // Ignore duplicate point\n while (nextX === x && nextY === y && k < segLen) {\n k++;\n nextIdx += dir;\n idx += dir;\n nextX = points[nextIdx * 2];\n nextY = points[nextIdx * 2 + 1];\n x = points[idx * 2];\n y = points[idx * 2 + 1];\n dx = x - prevX;\n dy = y - prevY;\n }\n var tmpK = k + 1;\n if (connectNulls) {\n // Find next point not null\n while (isPointNull(nextX, nextY) && tmpK < segLen) {\n tmpK++;\n nextIdx += dir;\n nextX = points[nextIdx * 2];\n nextY = points[nextIdx * 2 + 1];\n }\n }\n var ratioNextSeg = 0.5;\n var vx = 0;\n var vy = 0;\n var nextCpx0 = void 0;\n var nextCpy0 = void 0;\n // Is last point\n if (tmpK >= segLen || isPointNull(nextX, nextY)) {\n cpx1 = x;\n cpy1 = y;\n } else {\n vx = nextX - prevX;\n vy = nextY - prevY;\n var dx0 = x - prevX;\n var dx1 = nextX - x;\n var dy0 = y - prevY;\n var dy1 = nextY - y;\n var lenPrevSeg = void 0;\n var lenNextSeg = void 0;\n if (smoothMonotone === 'x') {\n lenPrevSeg = Math.abs(dx0);\n lenNextSeg = Math.abs(dx1);\n var dir_1 = vx > 0 ? 1 : -1;\n cpx1 = x - dir_1 * lenPrevSeg * smooth;\n cpy1 = y;\n nextCpx0 = x + dir_1 * lenNextSeg * smooth;\n nextCpy0 = y;\n } else if (smoothMonotone === 'y') {\n lenPrevSeg = Math.abs(dy0);\n lenNextSeg = Math.abs(dy1);\n var dir_2 = vy > 0 ? 1 : -1;\n cpx1 = x;\n cpy1 = y - dir_2 * lenPrevSeg * smooth;\n nextCpx0 = x;\n nextCpy0 = y + dir_2 * lenNextSeg * smooth;\n } else {\n lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\n lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n // Use ratio of seg length\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n cpx1 = x - vx * smooth * (1 - ratioNextSeg);\n cpy1 = y - vy * smooth * (1 - ratioNextSeg);\n // cp0 of next segment\n nextCpx0 = x + vx * smooth * ratioNextSeg;\n nextCpy0 = y + vy * smooth * ratioNextSeg;\n // Smooth constraint between point and next point.\n // Avoid exceeding extreme after smoothing.\n nextCpx0 = mathMin(nextCpx0, mathMax(nextX, x));\n nextCpy0 = mathMin(nextCpy0, mathMax(nextY, y));\n nextCpx0 = mathMax(nextCpx0, mathMin(nextX, x));\n nextCpy0 = mathMax(nextCpy0, mathMin(nextY, y));\n // Reclaculate cp1 based on the adjusted cp0 of next seg.\n vx = nextCpx0 - x;\n vy = nextCpy0 - y;\n cpx1 = x - vx * lenPrevSeg / lenNextSeg;\n cpy1 = y - vy * lenPrevSeg / lenNextSeg;\n // Smooth constraint between point and prev point.\n // Avoid exceeding extreme after smoothing.\n cpx1 = mathMin(cpx1, mathMax(prevX, x));\n cpy1 = mathMin(cpy1, mathMax(prevY, y));\n cpx1 = mathMax(cpx1, mathMin(prevX, x));\n cpy1 = mathMax(cpy1, mathMin(prevY, y));\n // Adjust next cp0 again.\n vx = x - cpx1;\n vy = y - cpy1;\n nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\n nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\n }\n }\n ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\n cpx0 = nextCpx0;\n cpy0 = nextCpy0;\n } else {\n ctx.lineTo(x, y);\n }\n }\n prevX = x;\n prevY = y;\n idx += dir;\n }\n return k;\n}\nvar ECPolylineShape = /** @class */function () {\n function ECPolylineShape() {\n this.smooth = 0;\n this.smoothConstraint = true;\n }\n return ECPolylineShape;\n}();\nvar ECPolyline = /** @class */function (_super) {\n __extends(ECPolyline, _super);\n function ECPolyline(opts) {\n var _this = _super.call(this, opts) || this;\n _this.type = 'ec-polyline';\n return _this;\n }\n ECPolyline.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n ECPolyline.prototype.getDefaultShape = function () {\n return new ECPolylineShape();\n };\n ECPolyline.prototype.buildPath = function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length / 2;\n // const result = getBoundingBox(points, shape.smoothConstraint);\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n for (; i < len; i++) {\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n break;\n }\n }\n }\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n };\n ECPolyline.prototype.getPointOn = function (xOrY, dim) {\n if (!this.path) {\n this.createPathProxy();\n this.buildPath(this.path, this.shape);\n }\n var path = this.path;\n var data = path.data;\n var CMD = PathProxy.CMD;\n var x0;\n var y0;\n var isDimX = dim === 'x';\n var roots = [];\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n var x = void 0;\n var y = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var x3 = void 0;\n var y3 = void 0;\n var t = void 0;\n switch (cmd) {\n case CMD.M:\n x0 = data[i++];\n y0 = data[i++];\n break;\n case CMD.L:\n x = data[i++];\n y = data[i++];\n t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0);\n if (t <= 1 && t >= 0) {\n var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0;\n return isDimX ? [xOrY, val] : [val, xOrY];\n }\n x0 = x;\n y0 = y;\n break;\n case CMD.C:\n x = data[i++];\n y = data[i++];\n x2 = data[i++];\n y2 = data[i++];\n x3 = data[i++];\n y3 = data[i++];\n var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots) : cubicRootAt(y0, y, y2, y3, xOrY, roots);\n if (nRoot > 0) {\n for (var i_1 = 0; i_1 < nRoot; i_1++) {\n var t_1 = roots[i_1];\n if (t_1 <= 1 && t_1 >= 0) {\n var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1);\n return isDimX ? [xOrY, val] : [val, xOrY];\n }\n }\n }\n x0 = x3;\n y0 = y3;\n break;\n }\n }\n };\n return ECPolyline;\n}(Path);\nexport { ECPolyline };\nvar ECPolygonShape = /** @class */function (_super) {\n __extends(ECPolygonShape, _super);\n function ECPolygonShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ECPolygonShape;\n}(ECPolylineShape);\nvar ECPolygon = /** @class */function (_super) {\n __extends(ECPolygon, _super);\n function ECPolygon(opts) {\n var _this = _super.call(this, opts) || this;\n _this.type = 'ec-polygon';\n return _this;\n }\n ECPolygon.prototype.getDefaultShape = function () {\n return new ECPolygonShape();\n };\n ECPolygon.prototype.buildPath = function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length / 2;\n var smoothMonotone = shape.smoothMonotone;\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n for (; i < len; i++) {\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n break;\n }\n }\n }\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n };\n return ECPolygon;\n}(Path);\nexport { ECPolygon };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n// FIXME step not support polar\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport SymbolClz from '../helper/Symbol.js';\nimport lineAnimationDiff from './lineAnimationDiff.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as modelUtil from '../../util/model.js';\nimport { ECPolyline, ECPolygon } from './poly.js';\nimport ChartView from '../../view/Chart.js';\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createGridClipPath, createPolarClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { setStatesStylesFromModel, setStatesFlag, toggleHoverEmphasis, SPECIAL_STATES } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels, labelInner } from '../../label/labelStyle.js';\nimport { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nimport { convertToColorString } from '../../util/format.js';\nimport { lerp } from 'zrender/lib/tool/color.js';\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n for (var i = 0; i < points1.length; i++) {\n if (points1[i] !== points2[i]) {\n return;\n }\n }\n return true;\n}\nfunction bboxFromPoints(points) {\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n if (!isNaN(x)) {\n minX = Math.min(x, minX);\n maxX = Math.max(x, maxX);\n }\n if (!isNaN(y)) {\n minY = Math.min(y, minY);\n maxY = Math.max(y, maxY);\n }\n }\n return [[minX, minY], [maxX, maxY]];\n}\nfunction getBoundingDiff(points1, points2) {\n var _a = bboxFromPoints(points1),\n min1 = _a[0],\n max1 = _a[1];\n var _b = bboxFromPoints(points2),\n min2 = _b[0],\n max2 = _b[1];\n // Get a max value from each corner of two boundings.\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\nfunction getSmooth(smooth) {\n return zrUtil.isNumber(smooth) ? smooth : smooth ? 0.5 : 0;\n}\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n var len = data.count();\n var points = createFloat32Array(len * 2);\n for (var idx = 0; idx < len; idx++) {\n var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\n points[idx * 2] = pt[0];\n points[idx * 2 + 1] = pt[1];\n }\n return points;\n}\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt, connectNulls) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n var i = 0;\n var stepPt = [];\n var pt = [];\n var nextPt = [];\n var filteredPoints = [];\n if (connectNulls) {\n for (i = 0; i < points.length; i += 2) {\n if (!isNaN(points[i]) && !isNaN(points[i + 1])) {\n filteredPoints.push(points[i], points[i + 1]);\n }\n }\n points = filteredPoints;\n }\n for (i = 0; i < points.length - 2; i += 2) {\n nextPt[0] = points[i + 2];\n nextPt[1] = points[i + 3];\n pt[0] = points[i];\n pt[1] = points[i + 1];\n stepPoints.push(pt[0], pt[1]);\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n break;\n case 'middle':\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n stepPoints.push(stepPt2[0], stepPt2[1]);\n break;\n default:\n // default is start\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n }\n }\n // Last points\n stepPoints.push(points[i++], points[i++]);\n return stepPoints;\n}\n/**\n * Clip color stops to edge. Avoid creating too large gradients.\n * Which may lead to blurry when GPU acceleration is enabled. See #15680\n *\n * The stops has been sorted from small to large.\n */\nfunction clipColorStops(colorStops, maxSize) {\n var newColorStops = [];\n var len = colorStops.length;\n // coord will always < 0 in prevOutOfRangeColorStop.\n var prevOutOfRangeColorStop;\n var prevInRangeColorStop;\n function lerpStop(stop0, stop1, clippedCoord) {\n var coord0 = stop0.coord;\n var p = (clippedCoord - coord0) / (stop1.coord - coord0);\n var color = lerp(p, [stop0.color, stop1.color]);\n return {\n coord: clippedCoord,\n color: color\n };\n }\n for (var i = 0; i < len; i++) {\n var stop_1 = colorStops[i];\n var coord = stop_1.coord;\n if (coord < 0) {\n prevOutOfRangeColorStop = stop_1;\n } else if (coord > maxSize) {\n if (prevInRangeColorStop) {\n newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));\n } else if (prevOutOfRangeColorStop) {\n // If there are two stops and coord range is between these two stops\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));\n }\n // All following stop will be out of range. So just ignore them.\n break;\n } else {\n if (prevOutOfRangeColorStop) {\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0));\n // Reset\n prevOutOfRangeColorStop = null;\n }\n newColorStops.push(stop_1);\n prevInRangeColorStop = stop_1;\n }\n }\n return newColorStops;\n}\nfunction getVisualGradient(data, coordSys, api) {\n var visualMetaList = data.getVisual('visualMeta');\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n if (coordSys.type !== 'cartesian2d') {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style is only supported on cartesian2d.');\n }\n return;\n }\n var coordDim;\n var visualMeta;\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);\n coordDim = dimInfo && dimInfo.coordDim;\n // Can only be x or y\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n if (!visualMeta) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style only support x or y dimension.');\n }\n return;\n }\n // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n var axis = coordSys.getAxis(coordDim);\n // dataToCoord mapping may not be linear, but must be monotonic.\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n // offset will be calculated later.\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n var colorStopsInRange = clipColorStops(colorStops, coordDim === 'x' ? api.getWidth() : api.getHeight());\n var inRangeStopLen = colorStopsInRange.length;\n if (!inRangeStopLen && stopLen) {\n // All stops are out of range. All will be the same color.\n return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;\n }\n var tinyExtent = 10; // Arbitrary value: 10px\n var minCoord = colorStopsInRange[0].coord - tinyExtent;\n var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n zrUtil.each(colorStopsInRange, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStopsInRange.push({\n // NOTE: inRangeStopLen may still be 0 if stoplen is zero.\n offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStopsInRange.unshift({\n offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n });\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStopsInRange, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n if (showAllSymbol && !isAuto) {\n return;\n }\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n if (!categoryAxis) {\n return;\n }\n // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n if (isAuto\n // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n }\n // Otherwise follow the label interval strategy on category axis.\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n var ordinalNumber = categoryAxis.scale.getRawOrdinalNumber(labelItem.tickValue);\n labelMap[ordinalNumber] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In most cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex\n // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0]\n // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n return true;\n}\nfunction isPointNull(x, y) {\n return isNaN(x) || isNaN(y);\n}\nfunction getLastIndexNotNull(points) {\n var len = points.length / 2;\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n return len - 1;\n}\nfunction getPointAtIndex(points, idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n}\nfunction getIndexRange(points, xOrY, dim) {\n var len = points.length / 2;\n var dimIdx = dim === 'x' ? 0 : 1;\n var a;\n var b;\n var prevIndex = 0;\n var nextIndex = -1;\n for (var i = 0; i < len; i++) {\n b = points[i * 2 + dimIdx];\n if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\n continue;\n }\n if (i === 0) {\n a = b;\n continue;\n }\n if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\n nextIndex = i;\n break;\n }\n prevIndex = i;\n a = b;\n }\n return {\n range: [prevIndex, nextIndex],\n t: (xOrY - a) / (b - a)\n };\n}\nfunction anyStateShowEndLabel(seriesModel) {\n if (seriesModel.get(['endLabel', 'show'])) {\n return true;\n }\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n if (seriesModel.get([SPECIAL_STATES[i], 'endLabel', 'show'])) {\n return true;\n }\n }\n return false;\n}\nfunction createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n var endLabelModel_1 = seriesModel.getModel('endLabel');\n var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\n var data_1 = seriesModel.getData();\n var labelAnimationRecord_1 = {\n lastFrameIndex: 0\n };\n var during = anyStateShowEndLabel(seriesModel) ? function (percent, clipRect) {\n lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\n } : null;\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\n var endLabel = lineView._endLabel;\n if (endLabel && hasAnimation) {\n if (labelAnimationRecord_1.originalX != null) {\n endLabel.attr({\n x: labelAnimationRecord_1.originalX,\n y: labelAnimationRecord_1.originalY\n });\n }\n }\n }, during);\n // Expand clip shape to avoid clipping when line value exceeds axis\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n // Set to the final frame. To make sure label layout is right.\n if (during) {\n during(1, clipPath);\n }\n return clipPath;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (seriesModel.get(['endLabel', 'show'])) {\n console.warn('endLabel is not supported for lines in polar systems.');\n }\n }\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\nfunction getEndLabelStateSpecified(endLabelModel, coordSys) {\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var align = isHorizontal ? isBaseInversed ? 'right' : 'left' : 'center';\n var verticalAlign = isHorizontal ? 'middle' : isBaseInversed ? 'top' : 'bottom';\n return {\n normal: {\n align: endLabelModel.get('align') || align,\n verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign\n }\n };\n}\nvar LineView = /** @class */function (_super) {\n __extends(LineView, _super);\n function LineView() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LineView.prototype.init = function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n };\n LineView.prototype.render = function (seriesModel, ecModel, api) {\n var _this = this;\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.getLayout('points') || [];\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = !ecModel.ssr && seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var connectNulls = seriesModel.get('connectNulls');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys);\n // Remove temporary symbols\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n // Remove previous created symbols if showSymbol changed to false\n if (!showSymbol) {\n symbolDraw.remove();\n }\n group.add(lineGroup);\n // FIXME step not support polar\n var step = !isCoordSysPolar ? seriesModel.get('step') : false;\n var clipShapeForSymbol;\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea();\n // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r += 0.5;\n }\n }\n this._clipShapeForSymbol = clipShapeForSymbol;\n var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual('style')[data.getVisual('drawType')];\n // Initialization animation or coordinate system changed\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol,\n disableAnimation: true,\n getSymbolPoint: function (idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n });\n hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\n }\n polyline = this._newPolyline(points);\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints);\n } // If areaStyle is removed\n else if (polygon) {\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n }\n // NOTE: Must update _endLabel before setClipPath.\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n }\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n }\n // NOTE: Must update _endLabel before setClipPath.\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n }\n // Update clipPath\n var oldClipPath = lineGroup.getClipPath();\n if (oldClipPath) {\n var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);\n graphic.initProps(oldClipPath, {\n shape: newClipPath.shape\n }, seriesModel);\n } else {\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n }\n // Always update, or it is wrong in the case turning on legend\n // because points are not changed.\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol,\n disableAnimation: true,\n getSymbolPoint: function (idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n });\n // In the case data zoom triggered refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing.\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\n }\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n var emphasisModel = seriesModel.getModel('emphasis');\n var focus = emphasisModel.get('focus');\n var blurScope = emphasisModel.get('blurScope');\n var emphasisDisabled = emphasisModel.get('disabled');\n polyline.useStyle(zrUtil.defaults(\n // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\n if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\n var emphasisLineStyle = polyline.getState('emphasis').style;\n emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;\n }\n // Needs seriesIndex for focus\n getECData(polyline).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);\n var smooth = getSmooth(seriesModel.get('smooth'));\n var smoothMonotone = seriesModel.get('smoothMonotone');\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: smoothMonotone,\n connectNulls: connectNulls\n });\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel',\n decal: data.getVisual('style').decal\n }));\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: smoothMonotone,\n connectNulls: connectNulls\n });\n setStatesStylesFromModel(polygon, seriesModel, 'areaStyle');\n // Needs seriesIndex for focus\n getECData(polygon).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);\n }\n var changePolyState = function (toState) {\n _this._changePolyState(toState);\n };\n data.eachItemGraphicEl(function (el) {\n // Switch polyline / polygon state if element changed its state.\n el && (el.onHoverStateChange = changePolyState);\n });\n this._polyline.onHoverStateChange = changePolyState;\n this._data = data;\n // Save the coordinate system for transition animation when data changed\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n if (seriesModel.get('triggerLineEvent')) {\n this.packEventData(seriesModel, polyline);\n polygon && this.packEventData(seriesModel, polygon);\n }\n };\n LineView.prototype.packEventData = function (seriesModel, el) {\n getECData(el).eventData = {\n componentType: 'series',\n componentSubType: 'line',\n componentIndex: seriesModel.componentIndex,\n seriesIndex: seriesModel.seriesIndex,\n seriesName: seriesModel.name,\n seriesType: 'line'\n };\n };\n LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n this._changePolyState('emphasis');\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var points = data.getLayout('points');\n var symbol = data.getItemGraphicEl(dataIndex);\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var x = points[dataIndex * 2];\n var y = points[dataIndex * 2 + 1];\n if (isNaN(x) || isNaN(y)) {\n // Null data\n return;\n }\n // fix #11360: shouldn't draw symbol outside clipShapeForSymbol\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\n return;\n }\n var zlevel = seriesModel.get('zlevel') || 0;\n var z = seriesModel.get('z') || 0;\n symbol = new SymbolClz(data, dataIndex);\n symbol.x = x;\n symbol.y = y;\n symbol.setZ(zlevel, z);\n // ensure label text of the temporary symbol is in front of line and area polygon\n var symbolLabel = symbol.getSymbolPath().getTextContent();\n if (symbolLabel) {\n symbolLabel.zlevel = zlevel;\n symbolLabel.z = z;\n symbolLabel.z2 = this._polyline.z2 + 1;\n }\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol);\n // Stop scale animation\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n };\n LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n this._changePolyState('normal');\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n };\n LineView.prototype._changePolyState = function (toState) {\n var polygon = this._polygon;\n setStatesFlag(this._polyline, toState);\n polygon && setStatesFlag(polygon, toState);\n };\n LineView.prototype._newPolyline = function (points) {\n var polyline = this._polyline;\n // Remove previous created polyline\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n polyline = new ECPolyline({\n shape: {\n points: points\n },\n segmentIgnoreThreshold: 2,\n z2: 10\n });\n this._lineGroup.add(polyline);\n this._polyline = polyline;\n return polyline;\n };\n LineView.prototype._newPolygon = function (points, stackedOnPoints) {\n var polygon = this._polygon;\n // Remove previous created polygon\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n polygon = new ECPolygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n segmentIgnoreThreshold: 2\n });\n this._lineGroup.add(polygon);\n this._polygon = polygon;\n return polygon;\n };\n LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\n var isHorizontalOrRadial;\n var isCoordSysPolar;\n var baseAxis = coordSys.getBaseAxis();\n var isAxisInverse = baseAxis.inverse;\n if (coordSys.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n isCoordSysPolar = false;\n } else if (coordSys.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n isCoordSysPolar = true;\n }\n var seriesModel = data.hostModel;\n var seriesDuration = seriesModel.get('animationDuration');\n if (zrUtil.isFunction(seriesDuration)) {\n seriesDuration = seriesDuration(null);\n }\n var seriesDelay = seriesModel.get('animationDelay') || 0;\n var seriesDelayValue = zrUtil.isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay;\n data.eachItemGraphicEl(function (symbol, idx) {\n var el = symbol;\n if (el) {\n var point = [symbol.x, symbol.y];\n var start = void 0;\n var end = void 0;\n var current = void 0;\n if (clipShape) {\n if (isCoordSysPolar) {\n var polarClip = clipShape;\n var coord = coordSys.pointToCoord(point);\n if (isHorizontalOrRadial) {\n start = polarClip.startAngle;\n end = polarClip.endAngle;\n current = -coord[1] / 180 * Math.PI;\n } else {\n start = polarClip.r0;\n end = polarClip.r;\n current = coord[0];\n }\n } else {\n var gridClip = clipShape;\n if (isHorizontalOrRadial) {\n start = gridClip.x;\n end = gridClip.x + gridClip.width;\n current = symbol.x;\n } else {\n start = gridClip.y + gridClip.height;\n end = gridClip.y;\n current = symbol.y;\n }\n }\n }\n var ratio = end === start ? 0 : (current - start) / (end - start);\n if (isAxisInverse) {\n ratio = 1 - ratio;\n }\n var delay = zrUtil.isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue;\n var symbolPath = el.getSymbolPath();\n var text = symbolPath.getTextContent();\n el.attr({\n scaleX: 0,\n scaleY: 0\n });\n el.animateTo({\n scaleX: 1,\n scaleY: 1\n }, {\n duration: 200,\n setToFinal: true,\n delay: delay\n });\n if (text) {\n text.animateFrom({\n style: {\n opacity: 0\n }\n }, {\n duration: 300,\n delay: delay\n });\n }\n symbolPath.disableLabelAnimation = true;\n }\n });\n };\n LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys, inheritColor) {\n var endLabelModel = seriesModel.getModel('endLabel');\n if (anyStateShowEndLabel(seriesModel)) {\n var data_2 = seriesModel.getData();\n var polyline = this._polyline;\n // series may be filtered.\n var points = data_2.getLayout('points');\n if (!points) {\n polyline.removeTextContent();\n this._endLabel = null;\n return;\n }\n var endLabel = this._endLabel;\n if (!endLabel) {\n endLabel = this._endLabel = new graphic.Text({\n z2: 200 // should be higher than item symbol\n });\n\n endLabel.ignoreClip = true;\n polyline.setTextContent(this._endLabel);\n polyline.disableLabelAnimation = true;\n }\n // Find last non-NaN data to display data\n var dataIndex = getLastIndexNotNull(points);\n if (dataIndex >= 0) {\n setLabelStyle(polyline, getLabelStatesModels(seriesModel, 'endLabel'), {\n inheritColor: inheritColor,\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: function (dataIndex, opt, interpolatedValue) {\n return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex);\n },\n enableTextSetter: true\n }, getEndLabelStateSpecified(endLabelModel, coordSys));\n polyline.textConfig.position = null;\n }\n } else if (this._endLabel) {\n this._polyline.removeTextContent();\n this._endLabel = null;\n }\n };\n LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\n var endLabel = this._endLabel;\n var polyline = this._polyline;\n if (endLabel) {\n // NOTE: Don't remove percent < 1. percent === 1 means the first frame during render.\n // The label is not prepared at this time.\n if (percent < 1 && animationRecord.originalX == null) {\n animationRecord.originalX = endLabel.x;\n animationRecord.originalY = endLabel.y;\n }\n var points = data.getLayout('points');\n var seriesModel = data.hostModel;\n var connectNulls = seriesModel.get('connectNulls');\n var precision = endLabelModel.get('precision');\n var distance = endLabelModel.get('distance') || 0;\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var clipShape = clipRect.shape;\n var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;\n var distanceX = (isHorizontal ? distance : 0) * (isBaseInversed ? -1 : 1);\n var distanceY = (isHorizontal ? 0 : -distance) * (isBaseInversed ? -1 : 1);\n var dim = isHorizontal ? 'x' : 'y';\n var dataIndexRange = getIndexRange(points, xOrY, dim);\n var indices = dataIndexRange.range;\n var diff = indices[1] - indices[0];\n var value = void 0;\n if (diff >= 1) {\n // diff > 1 && connectNulls, which is on the null data.\n if (diff > 1 && !connectNulls) {\n var pt = getPointAtIndex(points, indices[0]);\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n valueAnimation && (value = seriesModel.getRawValue(indices[0]));\n } else {\n var pt = polyline.getPointOn(xOrY, dim);\n pt && endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n var startValue = seriesModel.getRawValue(indices[0]);\n var endValue = seriesModel.getRawValue(indices[1]);\n valueAnimation && (value = modelUtil.interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\n }\n animationRecord.lastFrameIndex = indices[0];\n } else {\n // If diff <= 0, which is the range is not found(Include NaN)\n // Choose the first point or last point.\n var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;\n var pt = getPointAtIndex(points, idx);\n valueAnimation && (value = seriesModel.getRawValue(idx));\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n }\n if (valueAnimation) {\n var inner = labelInner(endLabel);\n if (typeof inner.setLabelText === 'function') {\n inner.setLabelText(value);\n }\n }\n }\n };\n /**\n * @private\n */\n // FIXME Two value axis\n LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step, connectNulls);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls);\n next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls);\n }\n // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.stopAnimation();\n polyline.setShape({\n points: next\n });\n if (polygon) {\n polygon.stopAnimation();\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n return;\n }\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n var target = {\n shape: {\n points: next\n }\n };\n // Also animate the original points.\n // If points reference is changed when turning into step line.\n if (diff.current !== current) {\n target.shape.__points = diff.next;\n }\n // Stop previous animation.\n polyline.stopAnimation();\n graphic.updateProps(polyline, target, seriesModel);\n if (polygon) {\n polygon.setShape({\n // Reuse the points with polyline.\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n polygon.stopAnimation();\n graphic.updateProps(polygon, {\n shape: {\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n // If use attr directly in updateProps.\n if (polyline.shape.points !== polygon.shape.points) {\n polygon.shape.points = polyline.shape.points;\n }\n }\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n polygon && polygon.dirtyShape();\n var points = polyline.shape.__points;\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n var offset = updatedDataInfo[i].ptIdx * 2;\n el.x = points[offset];\n el.y = points[offset + 1];\n el.markRedraw();\n }\n });\n }\n };\n LineView.prototype.remove = function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n this._lineGroup.removeAll();\n this._symbolDraw.remove(true);\n // Remove temporary created elements when highlighting\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null;\n };\n LineView.type = 'line';\n return LineView;\n}(ChartView);\nexport default LineView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { map } from 'zrender/lib/core/util.js';\nimport createRenderPlanner from '../chart/helper/createRenderPlanner.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\nimport { createFloat32Array } from '../util/vendor.js';\nexport default function pointsLayout(seriesType, forceStoreInTypedArray) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\n if (!coordSys) {\n return;\n }\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n if (isDimensionStacked(data, dims[0])) {\n dims[0] = stackResultDim;\n }\n if (isDimensionStacked(data, dims[1])) {\n dims[1] = stackResultDim;\n }\n var store = data.getStore();\n var dimIdx0 = data.getDimensionIndex(dims[0]);\n var dimIdx1 = data.getDimensionIndex(dims[1]);\n return dimLen && {\n progress: function (params, data) {\n var segCount = params.end - params.start;\n var points = useTypedArray && createFloat32Array(segCount * dimLen);\n var tmpIn = [];\n var tmpOut = [];\n for (var i = params.start, offset = 0; i < params.end; i++) {\n var point = void 0;\n if (dimLen === 1) {\n var x = store.get(dimIdx0, i);\n // NOTE: Make sure the second parameter is null to use default strategy.\n point = coordSys.dataToPoint(x, null, tmpOut);\n } else {\n tmpIn[0] = store.get(dimIdx0, i);\n tmpIn[1] = store.get(dimIdx1, i);\n // Let coordinate system to handle the NaN data.\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n if (useTypedArray) {\n points[offset++] = point[0];\n points[offset++] = point[1];\n } else {\n data.setItemLayout(i, point.slice());\n }\n }\n useTypedArray && data.setLayout('points', points);\n }\n };\n }\n };\n}\n;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport LineSeries from './LineSeries.js';\nimport LineView from './LineView.js';\n// In case developer forget to include grid component\nimport layoutPoints from '../../layout/points.js';\nimport dataSample from '../../processor/dataSample.js';\nexport function install(registers) {\n registers.registerChartView(LineView);\n registers.registerSeriesModel(LineSeries);\n registers.registerLayout(layoutPoints('line', true));\n registers.registerVisual({\n seriesType: 'line',\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n // Visual coding for legend\n var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n if (lineStyle && !lineStyle.stroke) {\n // Fill in visual should be palette color if\n // has color callback\n lineStyle.stroke = data.getVisual('style').fill;\n }\n data.setVisual('legendLineStyle', lineStyle);\n }\n });\n // Down sample after filter\n registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n}","import { cubicSubdivide } from '../core/curve.js';\nimport PathProxy from '../core/PathProxy.js';\nvar CMD = PathProxy.CMD;\nfunction aroundEqual(a, b) {\n return Math.abs(a - b) < 1e-5;\n}\nexport function pathToBezierCurves(path) {\n var data = path.data;\n var len = path.len();\n var bezierArrayGroups = [];\n var currentSubpath;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n function createNewSubpath(x, y) {\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n currentSubpath = [x, y];\n }\n function addLine(x0, y0, x1, y1) {\n if (!(aroundEqual(x0, x1) && aroundEqual(y0, y1))) {\n currentSubpath.push(x0, y0, x1, y1, x1, y1);\n }\n }\n function addArc(startAngle, endAngle, cx, cy, rx, ry) {\n var delta = Math.abs(endAngle - startAngle);\n var len = Math.tan(delta / 4) * 4 / 3;\n var dir = endAngle < startAngle ? -1 : 1;\n var c1 = Math.cos(startAngle);\n var s1 = Math.sin(startAngle);\n var c2 = Math.cos(endAngle);\n var s2 = Math.sin(endAngle);\n var x1 = c1 * rx + cx;\n var y1 = s1 * ry + cy;\n var x4 = c2 * rx + cx;\n var y4 = s2 * ry + cy;\n var hx = rx * len * dir;\n var hy = ry * len * dir;\n currentSubpath.push(x1 - hx * s1, y1 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);\n }\n var x1;\n var y1;\n var x2;\n var y2;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) {\n currentSubpath = [x0, y0];\n }\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n createNewSubpath(x0, y0);\n break;\n case CMD.L:\n x1 = data[i++];\n y1 = data[i++];\n addLine(xi, yi, x1, y1);\n xi = x1;\n yi = y1;\n break;\n case CMD.C:\n currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);\n break;\n case CMD.Q:\n x1 = data[i++];\n y1 = data[i++];\n x2 = data[i++];\n y2 = data[i++];\n currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);\n xi = x2;\n yi = y2;\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n x1 = Math.cos(startAngle) * rx + cx;\n y1 = Math.sin(startAngle) * ry + cy;\n if (isFirst) {\n x0 = x1;\n y0 = y1;\n createNewSubpath(x0, y0);\n }\n else {\n addLine(xi, yi, x1, y1);\n }\n xi = Math.cos(endAngle) * rx + cx;\n yi = Math.sin(endAngle) * ry + cy;\n var step = (anticlockwise ? -1 : 1) * Math.PI / 2;\n for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\n var nextAngle = anticlockwise ? Math.max(angle + step, endAngle)\n : Math.min(angle + step, endAngle);\n addArc(angle, nextAngle, cx, cy, rx, ry);\n }\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n x1 = x0 + data[i++];\n y1 = y0 + data[i++];\n createNewSubpath(x1, y0);\n addLine(x1, y0, x1, y1);\n addLine(x1, y1, x0, y1);\n addLine(x0, y1, x0, y0);\n addLine(x0, y0, x1, y0);\n break;\n case CMD.Z:\n currentSubpath && addLine(xi, yi, x0, y0);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n return bezierArrayGroups;\n}\nfunction adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out, scale) {\n if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) {\n out.push(x3, y3);\n return;\n }\n var PIXEL_DISTANCE = 2 / scale;\n var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE;\n var dx = x3 - x0;\n var dy = y3 - y0;\n var d = Math.sqrt(dx * dx + dy * dy);\n dx /= d;\n dy /= d;\n var dx1 = x1 - x0;\n var dy1 = y1 - y0;\n var dx2 = x2 - x3;\n var dy2 = y2 - y3;\n var cp1LenSqr = dx1 * dx1 + dy1 * dy1;\n var cp2LenSqr = dx2 * dx2 + dy2 * dy2;\n if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {\n out.push(x3, y3);\n return;\n }\n var projLen1 = dx * dx1 + dy * dy1;\n var projLen2 = -dx * dx2 - dy * dy2;\n var d1Sqr = cp1LenSqr - projLen1 * projLen1;\n var d2Sqr = cp2LenSqr - projLen2 * projLen2;\n if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0\n && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) {\n out.push(x3, y3);\n return;\n }\n var tmpSegX = [];\n var tmpSegY = [];\n cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY);\n adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out, scale);\n adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out, scale);\n}\nexport function pathToPolygons(path, scale) {\n var bezierArrayGroups = pathToBezierCurves(path);\n var polygons = [];\n scale = scale || 1;\n for (var i = 0; i < bezierArrayGroups.length; i++) {\n var beziers = bezierArrayGroups[i];\n var polygon = [];\n var x0 = beziers[0];\n var y0 = beziers[1];\n polygon.push(x0, y0);\n for (var k = 2; k < beziers.length;) {\n var x1 = beziers[k++];\n var y1 = beziers[k++];\n var x2 = beziers[k++];\n var y2 = beziers[k++];\n var x3 = beziers[k++];\n var y3 = beziers[k++];\n adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale);\n x0 = x3;\n y0 = y3;\n }\n polygons.push(polygon);\n }\n return polygons;\n}\n","import { fromPoints } from '../core/bbox.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Point from '../core/Point.js';\nimport { map } from '../core/util.js';\nimport Polygon from '../graphic/shape/Polygon.js';\nimport Rect from '../graphic/shape/Rect.js';\nimport Sector from '../graphic/shape/Sector.js';\nimport { pathToPolygons } from './convertPath.js';\nimport { clonePath } from './path.js';\nfunction getDividingGrids(dimSize, rowDim, count) {\n var rowSize = dimSize[rowDim];\n var columnSize = dimSize[1 - rowDim];\n var ratio = Math.abs(rowSize / columnSize);\n var rowCount = Math.ceil(Math.sqrt(ratio * count));\n var columnCount = Math.floor(count / rowCount);\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n var grids = [];\n for (var i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n var currentCount = rowCount * columnCount;\n var remained = count - currentCount;\n if (remained > 0) {\n for (var i = 0; i < remained; i++) {\n grids[i % rowCount] += 1;\n }\n }\n return grids;\n}\nfunction divideSector(sectorShape, count, outShapes) {\n var r0 = sectorShape.r0;\n var r = sectorShape.r;\n var startAngle = sectorShape.startAngle;\n var endAngle = sectorShape.endAngle;\n var angle = Math.abs(endAngle - startAngle);\n var arcLen = angle * r;\n var deltaR = r - r0;\n var isAngleRow = arcLen > Math.abs(deltaR);\n var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count);\n var rowSize = (isAngleRow ? angle : deltaR) / grids.length;\n for (var row = 0; row < grids.length; row++) {\n var columnSize = (isAngleRow ? deltaR : angle) / grids[row];\n for (var column = 0; column < grids[row]; column++) {\n var newShape = {};\n if (isAngleRow) {\n newShape.startAngle = startAngle + rowSize * row;\n newShape.endAngle = startAngle + rowSize * (row + 1);\n newShape.r0 = r0 + columnSize * column;\n newShape.r = r0 + columnSize * (column + 1);\n }\n else {\n newShape.startAngle = startAngle + columnSize * column;\n newShape.endAngle = startAngle + columnSize * (column + 1);\n newShape.r0 = r0 + rowSize * row;\n newShape.r = r0 + rowSize * (row + 1);\n }\n newShape.clockwise = sectorShape.clockwise;\n newShape.cx = sectorShape.cx;\n newShape.cy = sectorShape.cy;\n outShapes.push(newShape);\n }\n }\n}\nfunction divideRect(rectShape, count, outShapes) {\n var width = rectShape.width;\n var height = rectShape.height;\n var isHorizontalRow = width > height;\n var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count);\n var rowSizeDim = isHorizontalRow ? 'width' : 'height';\n var columnSizeDim = isHorizontalRow ? 'height' : 'width';\n var rowDim = isHorizontalRow ? 'x' : 'y';\n var columnDim = isHorizontalRow ? 'y' : 'x';\n var rowSize = rectShape[rowSizeDim] / grids.length;\n for (var row = 0; row < grids.length; row++) {\n var columnSize = rectShape[columnSizeDim] / grids[row];\n for (var column = 0; column < grids[row]; column++) {\n var newShape = {};\n newShape[rowDim] = row * rowSize;\n newShape[columnDim] = column * columnSize;\n newShape[rowSizeDim] = rowSize;\n newShape[columnSizeDim] = columnSize;\n newShape.x += rectShape.x;\n newShape.y += rectShape.y;\n outShapes.push(newShape);\n }\n }\n}\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y;\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n if (Math.abs(nmCrossProduct) < 1e-6) {\n return null;\n }\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n if (p < 0 || p > 1) {\n return null;\n }\n return new Point(p * mx + a1x, p * my + a1y);\n}\nfunction projPtOnLine(pt, lineA, lineB) {\n var dir = new Point();\n Point.sub(dir, lineB, lineA);\n dir.normalize();\n var dir2 = new Point();\n Point.sub(dir2, pt, lineA);\n var len = dir2.dot(dir);\n return len;\n}\nfunction addToPoly(poly, pt) {\n var last = poly[poly.length - 1];\n if (last && last[0] === pt[0] && last[1] === pt[1]) {\n return;\n }\n poly.push(pt);\n}\nfunction splitPolygonByLine(points, lineA, lineB) {\n var len = points.length;\n var intersections = [];\n for (var i = 0; i < len; i++) {\n var p0 = points[i];\n var p1 = points[(i + 1) % len];\n var intersectionPt = lineLineIntersect(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y);\n if (intersectionPt) {\n intersections.push({\n projPt: projPtOnLine(intersectionPt, lineA, lineB),\n pt: intersectionPt,\n idx: i\n });\n }\n }\n if (intersections.length < 2) {\n return [{ points: points }, { points: points }];\n }\n intersections.sort(function (a, b) {\n return a.projPt - b.projPt;\n });\n var splitPt0 = intersections[0];\n var splitPt1 = intersections[intersections.length - 1];\n if (splitPt1.idx < splitPt0.idx) {\n var tmp = splitPt0;\n splitPt0 = splitPt1;\n splitPt1 = tmp;\n }\n var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y];\n var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y];\n var newPolyA = [splitPt0Arr];\n var newPolyB = [splitPt1Arr];\n for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) {\n addToPoly(newPolyA, points[i].slice());\n }\n addToPoly(newPolyA, splitPt1Arr);\n addToPoly(newPolyA, splitPt0Arr);\n for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len; i++) {\n addToPoly(newPolyB, points[i % len].slice());\n }\n addToPoly(newPolyB, splitPt0Arr);\n addToPoly(newPolyB, splitPt1Arr);\n return [{\n points: newPolyA\n }, {\n points: newPolyB\n }];\n}\nfunction binaryDividePolygon(polygonShape) {\n var points = polygonShape.points;\n var min = [];\n var max = [];\n fromPoints(points, min, max);\n var boundingRect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n var width = boundingRect.width;\n var height = boundingRect.height;\n var x = boundingRect.x;\n var y = boundingRect.y;\n var pt0 = new Point();\n var pt1 = new Point();\n if (width > height) {\n pt0.x = pt1.x = x + width / 2;\n pt0.y = y;\n pt1.y = y + height;\n }\n else {\n pt0.y = pt1.y = y + height / 2;\n pt0.x = x;\n pt1.x = x + width;\n }\n return splitPolygonByLine(points, pt0, pt1);\n}\nfunction binaryDivideRecursive(divider, shape, count, out) {\n if (count === 1) {\n out.push(shape);\n }\n else {\n var mid = Math.floor(count / 2);\n var sub = divider(shape);\n binaryDivideRecursive(divider, sub[0], mid, out);\n binaryDivideRecursive(divider, sub[1], count - mid, out);\n }\n return out;\n}\nexport function clone(path, count) {\n var paths = [];\n for (var i = 0; i < count; i++) {\n paths.push(clonePath(path));\n }\n return paths;\n}\nfunction copyPathProps(source, target) {\n target.setStyle(source.style);\n target.z = source.z;\n target.z2 = source.z2;\n target.zlevel = source.zlevel;\n}\nfunction polygonConvert(points) {\n var out = [];\n for (var i = 0; i < points.length;) {\n out.push([points[i++], points[i++]]);\n }\n return out;\n}\nexport function split(path, count) {\n var outShapes = [];\n var shape = path.shape;\n var OutShapeCtor;\n switch (path.type) {\n case 'rect':\n divideRect(shape, count, outShapes);\n OutShapeCtor = Rect;\n break;\n case 'sector':\n divideSector(shape, count, outShapes);\n OutShapeCtor = Sector;\n break;\n case 'circle':\n divideSector({\n r0: 0, r: shape.r, startAngle: 0, endAngle: Math.PI * 2,\n cx: shape.cx, cy: shape.cy\n }, count, outShapes);\n OutShapeCtor = Sector;\n break;\n default:\n var m = path.getComputedTransform();\n var scale = m ? Math.sqrt(Math.max(m[0] * m[0] + m[1] * m[1], m[2] * m[2] + m[3] * m[3])) : 1;\n var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale), function (poly) { return polygonConvert(poly); });\n var polygonCount = polygons.length;\n if (polygonCount === 0) {\n binaryDivideRecursive(binaryDividePolygon, {\n points: polygons[0]\n }, count, outShapes);\n }\n else if (polygonCount === count) {\n for (var i = 0; i < polygonCount; i++) {\n outShapes.push({\n points: polygons[i]\n });\n }\n }\n else {\n var totalArea_1 = 0;\n var items = map(polygons, function (poly) {\n var min = [];\n var max = [];\n fromPoints(poly, min, max);\n var area = (max[1] - min[1]) * (max[0] - min[0]);\n totalArea_1 += area;\n return { poly: poly, area: area };\n });\n items.sort(function (a, b) { return b.area - a.area; });\n var left = count;\n for (var i = 0; i < polygonCount; i++) {\n var item = items[i];\n if (left <= 0) {\n break;\n }\n var selfCount = i === polygonCount - 1\n ? left\n : Math.ceil(item.area / totalArea_1 * count);\n if (selfCount < 0) {\n continue;\n }\n binaryDivideRecursive(binaryDividePolygon, {\n points: item.poly\n }, selfCount, outShapes);\n left -= selfCount;\n }\n ;\n }\n OutShapeCtor = Polygon;\n break;\n }\n if (!OutShapeCtor) {\n return clone(path, count);\n }\n var out = [];\n for (var i = 0; i < outShapes.length; i++) {\n var subPath = new OutShapeCtor();\n subPath.setShape(outShapes[i]);\n copyPathProps(path, subPath);\n out.push(subPath);\n }\n return out;\n}\n","import { cubicSubdivide } from '../core/curve.js';\nimport Path from '../graphic/Path.js';\nimport { defaults, map } from '../core/util.js';\nimport { lerp } from '../core/vector.js';\nimport { clonePath } from './path.js';\nimport Transformable from '../core/Transformable.js';\nimport { split } from './dividePath.js';\nimport { pathToBezierCurves } from './convertPath.js';\nfunction alignSubpath(subpath1, subpath2) {\n var len1 = subpath1.length;\n var len2 = subpath2.length;\n if (len1 === len2) {\n return [subpath1, subpath2];\n }\n var tmpSegX = [];\n var tmpSegY = [];\n var shorterPath = len1 < len2 ? subpath1 : subpath2;\n var shorterLen = Math.min(len1, len2);\n var diff = Math.abs(len2 - len1) / 6;\n var shorterBezierCount = (shorterLen - 2) / 6;\n var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;\n var newSubpath = [shorterPath[0], shorterPath[1]];\n var remained = diff;\n for (var i = 2; i < shorterLen;) {\n var x0 = shorterPath[i - 2];\n var y0 = shorterPath[i - 1];\n var x1 = shorterPath[i++];\n var y1 = shorterPath[i++];\n var x2 = shorterPath[i++];\n var y2 = shorterPath[i++];\n var x3 = shorterPath[i++];\n var y3 = shorterPath[i++];\n if (remained <= 0) {\n newSubpath.push(x1, y1, x2, y2, x3, y3);\n continue;\n }\n var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;\n for (var k = 1; k <= actualSubDivCount; k++) {\n var p = k / actualSubDivCount;\n cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\n x0 = tmpSegX[3];\n y0 = tmpSegY[3];\n newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\n x1 = tmpSegX[5];\n y1 = tmpSegY[5];\n x2 = tmpSegX[6];\n y2 = tmpSegY[6];\n }\n remained -= actualSubDivCount - 1;\n }\n return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\n}\nfunction createSubpath(lastSubpathSubpath, otherSubpath) {\n var len = lastSubpathSubpath.length;\n var lastX = lastSubpathSubpath[len - 2];\n var lastY = lastSubpathSubpath[len - 1];\n var newSubpath = [];\n for (var i = 0; i < otherSubpath.length;) {\n newSubpath[i++] = lastX;\n newSubpath[i++] = lastY;\n }\n return newSubpath;\n}\nexport function alignBezierCurves(array1, array2) {\n var _a;\n var lastSubpath1;\n var lastSubpath2;\n var newArray1 = [];\n var newArray2 = [];\n for (var i = 0; i < Math.max(array1.length, array2.length); i++) {\n var subpath1 = array1[i];\n var subpath2 = array2[i];\n var newSubpath1 = void 0;\n var newSubpath2 = void 0;\n if (!subpath1) {\n newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);\n newSubpath2 = subpath2;\n }\n else if (!subpath2) {\n newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);\n newSubpath1 = subpath1;\n }\n else {\n _a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1];\n lastSubpath1 = newSubpath1;\n lastSubpath2 = newSubpath2;\n }\n newArray1.push(newSubpath1);\n newArray2.push(newSubpath2);\n }\n return [newArray1, newArray2];\n}\nexport function centroid(array) {\n var signedArea = 0;\n var cx = 0;\n var cy = 0;\n var len = array.length;\n for (var i = 0, j = len - 2; i < len; j = i, i += 2) {\n var x0 = array[j];\n var y0 = array[j + 1];\n var x1 = array[i];\n var y1 = array[i + 1];\n var a = x0 * y1 - x1 * y0;\n signedArea += a;\n cx += (x0 + x1) * a;\n cy += (y0 + y1) * a;\n }\n if (signedArea === 0) {\n return [array[0] || 0, array[1] || 0];\n }\n return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\n}\nfunction findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {\n var bezierCount = (fromSubBeziers.length - 2) / 6;\n var bestScore = Infinity;\n var bestOffset = 0;\n var len = fromSubBeziers.length;\n var len2 = len - 2;\n for (var offset = 0; offset < bezierCount; offset++) {\n var cursorOffset = offset * 6;\n var score = 0;\n for (var k = 0; k < len; k += 2) {\n var idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2 + 2);\n var x0 = fromSubBeziers[idx] - fromCp[0];\n var y0 = fromSubBeziers[idx + 1] - fromCp[1];\n var x1 = toSubBeziers[k] - toCp[0];\n var y1 = toSubBeziers[k + 1] - toCp[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestOffset = offset;\n }\n }\n return bestOffset;\n}\nfunction reverse(array) {\n var newArr = [];\n var len = array.length;\n for (var i = 0; i < len; i += 2) {\n newArr[i] = array[len - i - 2];\n newArr[i + 1] = array[len - i - 1];\n }\n return newArr;\n}\nfunction findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) {\n var result = [];\n var fromNeedsReverse;\n for (var i = 0; i < fromArr.length; i++) {\n var fromSubpathBezier = fromArr[i];\n var toSubpathBezier = toArr[i];\n var fromCp = centroid(fromSubpathBezier);\n var toCp = centroid(toSubpathBezier);\n if (fromNeedsReverse == null) {\n fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\n }\n var newFromSubpathBezier = [];\n var newToSubpathBezier = [];\n var bestAngle = 0;\n var bestScore = Infinity;\n var tmpArr = [];\n var len = fromSubpathBezier.length;\n if (fromNeedsReverse) {\n fromSubpathBezier = reverse(fromSubpathBezier);\n }\n var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\n var len2 = len - 2;\n for (var k = 0; k < len2; k += 2) {\n var idx = (offset + k) % len2 + 2;\n newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\n newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\n }\n newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\n newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\n if (searchAngleIteration > 0) {\n var step = searchAngleRange / searchAngleIteration;\n for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\n var sa = Math.sin(angle);\n var ca = Math.cos(angle);\n var score = 0;\n for (var k = 0; k < fromSubpathBezier.length; k += 2) {\n var x0 = newFromSubpathBezier[k];\n var y0 = newFromSubpathBezier[k + 1];\n var x1 = toSubpathBezier[k] - toCp[0];\n var y1 = toSubpathBezier[k + 1] - toCp[1];\n var newX1 = x1 * ca - y1 * sa;\n var newY1 = x1 * sa + y1 * ca;\n tmpArr[k] = newX1;\n tmpArr[k + 1] = newY1;\n var dx = newX1 - x0;\n var dy = newY1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestAngle = angle;\n for (var m = 0; m < tmpArr.length; m++) {\n newToSubpathBezier[m] = tmpArr[m];\n }\n }\n }\n }\n else {\n for (var i_1 = 0; i_1 < len; i_1 += 2) {\n newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];\n newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];\n }\n }\n result.push({\n from: newFromSubpathBezier,\n to: newToSubpathBezier,\n fromCp: fromCp,\n toCp: toCp,\n rotation: -bestAngle\n });\n }\n return result;\n}\nexport function isCombineMorphing(path) {\n return path.__isCombineMorphing;\n}\nexport function isMorphing(el) {\n return el.__morphT >= 0;\n}\nvar SAVED_METHOD_PREFIX = '__mOriginal_';\nfunction saveAndModifyMethod(obj, methodName, modifiers) {\n var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n var originalMethod = obj[savedMethodName] || obj[methodName];\n if (!obj[savedMethodName]) {\n obj[savedMethodName] = obj[methodName];\n }\n var replace = modifiers.replace;\n var after = modifiers.after;\n var before = modifiers.before;\n obj[methodName] = function () {\n var args = arguments;\n var res;\n before && before.apply(this, args);\n if (replace) {\n res = replace.apply(this, args);\n }\n else {\n res = originalMethod.apply(this, args);\n }\n after && after.apply(this, args);\n return res;\n };\n}\nfunction restoreMethod(obj, methodName) {\n var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n if (obj[savedMethodName]) {\n obj[methodName] = obj[savedMethodName];\n obj[savedMethodName] = null;\n }\n}\nfunction applyTransformOnBeziers(bezierCurves, mm) {\n for (var i = 0; i < bezierCurves.length; i++) {\n var subBeziers = bezierCurves[i];\n for (var k = 0; k < subBeziers.length;) {\n var x = subBeziers[k];\n var y = subBeziers[k + 1];\n subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4];\n subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5];\n }\n }\n}\nfunction prepareMorphPath(fromPath, toPath) {\n var fromPathProxy = fromPath.getUpdatedPathProxy();\n var toPathProxy = toPath.getUpdatedPathProxy();\n var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1];\n var fromPathTransform = fromPath.getComputedTransform();\n var toPathTransform = toPath.getComputedTransform();\n function updateIdentityTransform() {\n this.transform = null;\n }\n fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform);\n toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform);\n saveAndModifyMethod(toPath, 'updateTransform', { replace: updateIdentityTransform });\n toPath.transform = null;\n var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);\n var tmpArr = [];\n saveAndModifyMethod(toPath, 'buildPath', { replace: function (path) {\n var t = toPath.__morphT;\n var onet = 1 - t;\n var newCp = [];\n for (var i = 0; i < morphingData.length; i++) {\n var item = morphingData[i];\n var from = item.from;\n var to = item.to;\n var angle = item.rotation * t;\n var fromCp = item.fromCp;\n var toCp = item.toCp;\n var sa = Math.sin(angle);\n var ca = Math.cos(angle);\n lerp(newCp, fromCp, toCp, t);\n for (var m = 0; m < from.length; m += 2) {\n var x0_1 = from[m];\n var y0_1 = from[m + 1];\n var x1 = to[m];\n var y1 = to[m + 1];\n var x = x0_1 * onet + x1 * t;\n var y = y0_1 * onet + y1 * t;\n tmpArr[m] = (x * ca - y * sa) + newCp[0];\n tmpArr[m + 1] = (x * sa + y * ca) + newCp[1];\n }\n var x0 = tmpArr[0];\n var y0 = tmpArr[1];\n path.moveTo(x0, y0);\n for (var m = 2; m < from.length;) {\n var x1 = tmpArr[m++];\n var y1 = tmpArr[m++];\n var x2 = tmpArr[m++];\n var y2 = tmpArr[m++];\n var x3 = tmpArr[m++];\n var y3 = tmpArr[m++];\n if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) {\n path.lineTo(x3, y3);\n }\n else {\n path.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n x0 = x3;\n y0 = y3;\n }\n }\n } });\n}\nexport function morphPath(fromPath, toPath, animationOpts) {\n if (!fromPath || !toPath) {\n return toPath;\n }\n var oldDone = animationOpts.done;\n var oldDuring = animationOpts.during;\n prepareMorphPath(fromPath, toPath);\n toPath.__morphT = 0;\n function restoreToPath() {\n restoreMethod(toPath, 'buildPath');\n restoreMethod(toPath, 'updateTransform');\n toPath.__morphT = -1;\n toPath.createPathProxy();\n toPath.dirtyShape();\n }\n toPath.animateTo({\n __morphT: 1\n }, defaults({\n during: function (p) {\n toPath.dirtyShape();\n oldDuring && oldDuring(p);\n },\n done: function () {\n restoreToPath();\n oldDone && oldDone();\n }\n }, animationOpts));\n return toPath;\n}\nfunction hilbert(x, y, minX, minY, maxX, maxY) {\n var bits = 16;\n x = (maxX === minX) ? 0 : Math.round(32767 * (x - minX) / (maxX - minX));\n y = (maxY === minY) ? 0 : Math.round(32767 * (y - minY) / (maxY - minY));\n var d = 0;\n var tmp;\n for (var s = (1 << bits) / 2; s > 0; s /= 2) {\n var rx = 0;\n var ry = 0;\n if ((x & s) > 0) {\n rx = 1;\n }\n if ((y & s) > 0) {\n ry = 1;\n }\n d += s * s * ((3 * rx) ^ ry);\n if (ry === 0) {\n if (rx === 1) {\n x = s - 1 - x;\n y = s - 1 - y;\n }\n tmp = x;\n x = y;\n y = tmp;\n }\n }\n return d;\n}\nfunction sortPaths(pathList) {\n var xMin = Infinity;\n var yMin = Infinity;\n var xMax = -Infinity;\n var yMax = -Infinity;\n var cps = map(pathList, function (path) {\n var rect = path.getBoundingRect();\n var m = path.getComputedTransform();\n var x = rect.x + rect.width / 2 + (m ? m[4] : 0);\n var y = rect.y + rect.height / 2 + (m ? m[5] : 0);\n xMin = Math.min(x, xMin);\n yMin = Math.min(y, yMin);\n xMax = Math.max(x, xMax);\n yMax = Math.max(y, yMax);\n return [x, y];\n });\n var items = map(cps, function (cp, idx) {\n return {\n cp: cp,\n z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),\n path: pathList[idx]\n };\n });\n return items.sort(function (a, b) { return a.z - b.z; }).map(function (item) { return item.path; });\n}\n;\nfunction defaultDividePath(param) {\n return split(param.path, param.count);\n}\nfunction createEmptyReturn() {\n return {\n fromIndividuals: [],\n toIndividuals: [],\n count: 0\n };\n}\nexport function combineMorph(fromList, toPath, animationOpts) {\n var fromPathList = [];\n function addFromPath(fromList) {\n for (var i = 0; i < fromList.length; i++) {\n var from = fromList[i];\n if (isCombineMorphing(from)) {\n addFromPath(from.childrenRef());\n }\n else if (from instanceof Path) {\n fromPathList.push(from);\n }\n }\n }\n addFromPath(fromList);\n var separateCount = fromPathList.length;\n if (!separateCount) {\n return createEmptyReturn();\n }\n var dividePath = animationOpts.dividePath || defaultDividePath;\n var toSubPathList = dividePath({\n path: toPath, count: separateCount\n });\n if (toSubPathList.length !== separateCount) {\n console.error('Invalid morphing: unmatched splitted path');\n return createEmptyReturn();\n }\n fromPathList = sortPaths(fromPathList);\n toSubPathList = sortPaths(toSubPathList);\n var oldDone = animationOpts.done;\n var oldDuring = animationOpts.during;\n var individualDelay = animationOpts.individualDelay;\n var identityTransform = new Transformable();\n for (var i = 0; i < separateCount; i++) {\n var from = fromPathList[i];\n var to = toSubPathList[i];\n to.parent = toPath;\n to.copyTransform(identityTransform);\n if (!individualDelay) {\n prepareMorphPath(from, to);\n }\n }\n toPath.__isCombineMorphing = true;\n toPath.childrenRef = function () {\n return toSubPathList;\n };\n function addToSubPathListToZr(zr) {\n for (var i = 0; i < toSubPathList.length; i++) {\n toSubPathList[i].addSelfToZr(zr);\n }\n }\n saveAndModifyMethod(toPath, 'addSelfToZr', {\n after: function (zr) {\n addToSubPathListToZr(zr);\n }\n });\n saveAndModifyMethod(toPath, 'removeSelfFromZr', {\n after: function (zr) {\n for (var i = 0; i < toSubPathList.length; i++) {\n toSubPathList[i].removeSelfFromZr(zr);\n }\n }\n });\n function restoreToPath() {\n toPath.__isCombineMorphing = false;\n toPath.__morphT = -1;\n toPath.childrenRef = null;\n restoreMethod(toPath, 'addSelfToZr');\n restoreMethod(toPath, 'removeSelfFromZr');\n }\n var toLen = toSubPathList.length;\n if (individualDelay) {\n var animating_1 = toLen;\n var eachDone = function () {\n animating_1--;\n if (animating_1 === 0) {\n restoreToPath();\n oldDone && oldDone();\n }\n };\n for (var i = 0; i < toLen; i++) {\n var indivdualAnimationOpts = individualDelay ? defaults({\n delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]),\n done: eachDone\n }, animationOpts) : animationOpts;\n morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts);\n }\n }\n else {\n toPath.__morphT = 0;\n toPath.animateTo({\n __morphT: 1\n }, defaults({\n during: function (p) {\n for (var i = 0; i < toLen; i++) {\n var child = toSubPathList[i];\n child.__morphT = toPath.__morphT;\n child.dirtyShape();\n }\n oldDuring && oldDuring(p);\n },\n done: function () {\n restoreToPath();\n for (var i = 0; i < fromList.length; i++) {\n restoreMethod(fromList[i], 'updateTransform');\n }\n oldDone && oldDone();\n }\n }, animationOpts));\n }\n if (toPath.__zr) {\n addToSubPathListToZr(toPath.__zr);\n }\n return {\n fromIndividuals: fromPathList,\n toIndividuals: toSubPathList,\n count: toLen\n };\n}\nexport function separateMorph(fromPath, toPathList, animationOpts) {\n var toLen = toPathList.length;\n var fromPathList = [];\n var dividePath = animationOpts.dividePath || defaultDividePath;\n function addFromPath(fromList) {\n for (var i = 0; i < fromList.length; i++) {\n var from = fromList[i];\n if (isCombineMorphing(from)) {\n addFromPath(from.childrenRef());\n }\n else if (from instanceof Path) {\n fromPathList.push(from);\n }\n }\n }\n if (isCombineMorphing(fromPath)) {\n addFromPath(fromPath.childrenRef());\n var fromLen = fromPathList.length;\n if (fromLen < toLen) {\n var k = 0;\n for (var i = fromLen; i < toLen; i++) {\n fromPathList.push(clonePath(fromPathList[k++ % fromLen]));\n }\n }\n fromPathList.length = toLen;\n }\n else {\n fromPathList = dividePath({ path: fromPath, count: toLen });\n var fromPathTransform = fromPath.getComputedTransform();\n for (var i = 0; i < fromPathList.length; i++) {\n fromPathList[i].setLocalTransform(fromPathTransform);\n }\n if (fromPathList.length !== toLen) {\n console.error('Invalid morphing: unmatched splitted path');\n return createEmptyReturn();\n }\n }\n fromPathList = sortPaths(fromPathList);\n toPathList = sortPaths(toPathList);\n var individualDelay = animationOpts.individualDelay;\n for (var i = 0; i < toLen; i++) {\n var indivdualAnimationOpts = individualDelay ? defaults({\n delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i])\n }, animationOpts) : animationOpts;\n morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts);\n }\n return {\n fromIndividuals: fromPathList,\n toIndividuals: toPathList,\n count: toPathList.length\n };\n}\nexport { split as defaultDividePath };\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { separateMorph, combineMorph, morphPath, isCombineMorphing } from 'zrender/lib/tool/morphPath.js';\nimport { Path } from '../util/graphic.js';\nimport { defaults, isArray } from 'zrender/lib/core/util.js';\nimport { getAnimationConfig } from './basicTransition.js';\nimport { clonePath } from 'zrender/lib/tool/path.js';\nfunction isMultiple(elements) {\n return isArray(elements[0]);\n}\nfunction prepareMorphBatches(one, many) {\n var batches = [];\n var batchCount = one.length;\n for (var i = 0; i < batchCount; i++) {\n batches.push({\n one: one[i],\n many: []\n });\n }\n for (var i = 0; i < many.length; i++) {\n var len = many[i].length;\n var k = void 0;\n for (k = 0; k < len; k++) {\n batches[k % batchCount].many.push(many[i][k]);\n }\n }\n var off = 0;\n // If one has more paths than each one of many. average them.\n for (var i = batchCount - 1; i >= 0; i--) {\n if (!batches[i].many.length) {\n var moveFrom = batches[off].many;\n if (moveFrom.length <= 1) {\n // Not enough\n // Start from the first one.\n if (off) {\n off = 0;\n } else {\n return batches;\n }\n }\n var len = moveFrom.length;\n var mid = Math.ceil(len / 2);\n batches[i].many = moveFrom.slice(mid, len);\n batches[off].many = moveFrom.slice(0, mid);\n off++;\n }\n }\n return batches;\n}\nvar pathDividers = {\n clone: function (params) {\n var ret = [];\n // Fitting the alpha\n var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count);\n for (var i = 0; i < params.count; i++) {\n var cloned = clonePath(params.path);\n cloned.setStyle('opacity', approxOpacity);\n ret.push(cloned);\n }\n return ret;\n },\n // Use the default divider\n split: null\n};\nexport function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) {\n if (!from.length || !to.length) {\n return;\n }\n var updateAnimationCfg = getAnimationConfig('update', seriesModel, dataIndex);\n if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) {\n return;\n }\n var animationDelay = seriesModel.getModel('universalTransition').get('delay');\n var animationCfg = Object.assign({\n // Need to setToFinal so the further calculation based on the style can be correct.\n // Like emphasis color.\n setToFinal: true\n }, updateAnimationCfg);\n var many;\n var one;\n if (isMultiple(from)) {\n // manyToOne\n many = from;\n one = to;\n }\n if (isMultiple(to)) {\n // oneToMany\n many = to;\n one = from;\n }\n function morphOneBatch(batch, fromIsMany, animateIndex, animateCount, forceManyOne) {\n var batchMany = batch.many;\n var batchOne = batch.one;\n if (batchMany.length === 1 && !forceManyOne) {\n // Is one to one\n var batchFrom = fromIsMany ? batchMany[0] : batchOne;\n var batchTo = fromIsMany ? batchOne : batchMany[0];\n if (isCombineMorphing(batchFrom)) {\n // Keep doing combine animation.\n morphOneBatch({\n many: [batchFrom],\n one: batchTo\n }, true, animateIndex, animateCount, true);\n } else {\n var individualAnimationCfg = animationDelay ? defaults({\n delay: animationDelay(animateIndex, animateCount)\n }, animationCfg) : animationCfg;\n morphPath(batchFrom, batchTo, individualAnimationCfg);\n animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg);\n }\n } else {\n var separateAnimationCfg = defaults({\n dividePath: pathDividers[divideShape],\n individualDelay: animationDelay && function (idx, count, fromPath, toPath) {\n return animationDelay(idx + animateIndex, animateCount);\n }\n }, animationCfg);\n var _a = fromIsMany ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg),\n fromIndividuals = _a.fromIndividuals,\n toIndividuals = _a.toIndividuals;\n var count = fromIndividuals.length;\n for (var k = 0; k < count; k++) {\n var individualAnimationCfg = animationDelay ? defaults({\n delay: animationDelay(k, count)\n }, animationCfg) : animationCfg;\n animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany ? batchMany[k] : batch.one, fromIsMany ? batch.one : batchMany[k], individualAnimationCfg);\n }\n }\n }\n var fromIsMany = many ? many === from\n // Is one to one. If the path number not match. also needs do merge and separate morphing.\n : from.length > to.length;\n var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]);\n var animateCount = 0;\n for (var i = 0; i < morphBatches.length; i++) {\n animateCount += morphBatches[i].many.length;\n }\n var animateIndex = 0;\n for (var i = 0; i < morphBatches.length; i++) {\n morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount);\n animateIndex += morphBatches[i].many.length;\n }\n}\nexport function getPathList(elements) {\n if (!elements) {\n return [];\n }\n if (isArray(elements)) {\n var pathList_1 = [];\n for (var i = 0; i < elements.length; i++) {\n pathList_1.push(getPathList(elements[i]));\n }\n return pathList_1;\n }\n var pathList = [];\n elements.traverse(function (el) {\n if (el instanceof Path && !el.disableMorphing && !el.invisible && !el.ignore) {\n pathList.push(el);\n }\n });\n return pathList;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Universal transitions that can animate between any shapes(series) and any properties in any amounts.\nimport { SERIES_UNIVERSAL_TRANSITION_PROP } from '../model/Series.js';\nimport { createHashMap, each, map, filter, isArray, extend } from 'zrender/lib/core/util.js';\nimport { applyMorphAnimation, getPathList } from './morphTransitionHelper.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { initProps } from '../util/graphic.js';\nimport DataDiffer from '../data/DataDiffer.js';\nimport { makeInner, normalizeToArray } from '../util/model.js';\nimport { warn } from '../util/log.js';\nimport { getAnimationConfig, getOldStyle } from './basicTransition.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nvar DATA_COUNT_THRESHOLD = 1e4;\nvar TRANSITION_NONE = 0;\nvar TRANSITION_P2C = 1;\nvar TRANSITION_C2P = 2;\n;\nvar getUniversalTransitionGlobalStore = makeInner();\nfunction getDimension(data, visualDimension) {\n var dimensions = data.dimensions;\n for (var i = 0; i < dimensions.length; i++) {\n var dimInfo = data.getDimensionInfo(dimensions[i]);\n if (dimInfo && dimInfo.otherDims[visualDimension] === 0) {\n return dimensions[i];\n }\n }\n}\n// get value by dimension. (only get value of itemGroupId or childGroupId, so convert it to string)\nfunction getValueByDimension(data, dataIndex, dimension) {\n var dimInfo = data.getDimensionInfo(dimension);\n var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta;\n if (dimInfo) {\n var value = data.get(dimInfo.name, dataIndex);\n if (dimOrdinalMeta) {\n return dimOrdinalMeta.categories[value] || value + '';\n }\n return value + '';\n }\n}\nfunction getGroupId(data, dataIndex, dataGroupId, isChild) {\n // try to get groupId from encode\n var visualDimension = isChild ? 'itemChildGroupId' : 'itemGroupId';\n var groupIdDim = getDimension(data, visualDimension);\n if (groupIdDim) {\n var groupId = getValueByDimension(data, dataIndex, groupIdDim);\n return groupId;\n }\n // try to get groupId from raw data item\n var rawDataItem = data.getRawDataItem(dataIndex);\n var property = isChild ? 'childGroupId' : 'groupId';\n if (rawDataItem && rawDataItem[property]) {\n return rawDataItem[property] + '';\n }\n // fallback\n if (isChild) {\n return;\n }\n // try to use series.dataGroupId as groupId, otherwise use dataItem's id as groupId\n return dataGroupId || data.getId(dataIndex);\n}\n// flatten all data items from different serieses into one arrary\nfunction flattenDataDiffItems(list) {\n var items = [];\n each(list, function (seriesInfo) {\n var data = seriesInfo.data;\n var dataGroupId = seriesInfo.dataGroupId;\n if (data.count() > DATA_COUNT_THRESHOLD) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Universal transition is disabled on large data > 10k.');\n }\n return;\n }\n var indices = data.getIndices();\n for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) {\n items.push({\n data: data,\n groupId: getGroupId(data, dataIndex, dataGroupId, false),\n childGroupId: getGroupId(data, dataIndex, dataGroupId, true),\n divide: seriesInfo.divide,\n dataIndex: dataIndex\n });\n }\n });\n return items;\n}\nfunction fadeInElement(newEl, newSeries, newIndex) {\n newEl.traverse(function (el) {\n if (el instanceof Path) {\n // TODO use fade in animation for target element.\n initProps(el, {\n style: {\n opacity: 0\n }\n }, newSeries, {\n dataIndex: newIndex,\n isFrom: true\n });\n }\n });\n}\nfunction removeEl(el) {\n if (el.parent) {\n // Bake parent transform to element.\n // So it can still have proper transform to transition after it's removed.\n var computedTransform = el.getComputedTransform();\n el.setLocalTransform(computedTransform);\n el.parent.remove(el);\n }\n}\nfunction stopAnimation(el) {\n el.stopAnimation();\n if (el.isGroup) {\n el.traverse(function (child) {\n child.stopAnimation();\n });\n }\n}\nfunction animateElementStyles(el, dataIndex, seriesModel) {\n var animationConfig = getAnimationConfig('update', seriesModel, dataIndex);\n animationConfig && el.traverse(function (child) {\n if (child instanceof Displayable) {\n var oldStyle = getOldStyle(child);\n if (oldStyle) {\n child.animateFrom({\n style: oldStyle\n }, animationConfig);\n }\n }\n });\n}\nfunction isAllIdSame(oldDiffItems, newDiffItems) {\n var len = oldDiffItems.length;\n if (len !== newDiffItems.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var oldItem = oldDiffItems[i];\n var newItem = newDiffItems[i];\n if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) {\n return false;\n }\n }\n return true;\n}\nfunction transitionBetween(oldList, newList, api) {\n var oldDiffItems = flattenDataDiffItems(oldList);\n var newDiffItems = flattenDataDiffItems(newList);\n function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) {\n if (rawFrom || from) {\n to.animateFrom({\n style: rawFrom && rawFrom !== from\n // dividingMethod like clone may override the style(opacity)\n // So extend it to raw style.\n ? extend(extend({}, rawFrom.style), from.style) : from.style\n }, animationCfg);\n }\n }\n var hasMorphAnimation = false;\n /**\n * With groupId and childGroupId, we can build parent-child relationships between dataItems.\n * However, we should mind the parent-child \"direction\" between old and new options.\n *\n * For example, suppose we have two dataItems from two series.data:\n *\n * dataA: [ dataB: [\n * { {\n * value: 5, value: 3,\n * groupId: 'creatures', groupId: 'animals',\n * childGroupId: 'animals' childGroupId: 'dogs'\n * }, },\n * ... ...\n * ] ]\n *\n * where dataA is belong to optionA and dataB is belong to optionB.\n *\n * When we `setOption(optionB)` from optionA, we choose childGroupId of dataItemA and groupId of\n * dataItemB as keys so the two keys are matched (both are 'animals'), then universalTransition\n * will work. This derection is \"parent -> child\".\n *\n * If we `setOption(optionA)` from optionB, we also choose groupId of dataItemB and childGroupId\n * of dataItemA as keys and universalTransition will work. This derection is \"child -> parent\".\n *\n * If there is no childGroupId specified, which means no multiLevelDrillDown/Up is needed and no\n * parent-child relationship exists. This direction is \"none\".\n *\n * So we need to know whether to use groupId or childGroupId as the key when we call the keyGetter\n * functions. Thus, we need to decide the direction first.\n *\n * The rule is:\n *\n * if (all childGroupIds in oldDiffItems and all groupIds in newDiffItems have common value) {\n * direction = 'parent -> child';\n * } else if (all groupIds in oldDiffItems and all childGroupIds in newDiffItems have common value) {\n * direction = 'child -> parent';\n * } else {\n * direction = 'none';\n * }\n */\n var direction = TRANSITION_NONE;\n // find all groupIds and childGroupIds from oldDiffItems\n var oldGroupIds = createHashMap();\n var oldChildGroupIds = createHashMap();\n oldDiffItems.forEach(function (item) {\n item.groupId && oldGroupIds.set(item.groupId, true);\n item.childGroupId && oldChildGroupIds.set(item.childGroupId, true);\n });\n // traverse newDiffItems and decide the direction according to the rule\n for (var i = 0; i < newDiffItems.length; i++) {\n var newGroupId = newDiffItems[i].groupId;\n if (oldChildGroupIds.get(newGroupId)) {\n direction = TRANSITION_P2C;\n break;\n }\n var newChildGroupId = newDiffItems[i].childGroupId;\n if (newChildGroupId && oldGroupIds.get(newChildGroupId)) {\n direction = TRANSITION_C2P;\n break;\n }\n }\n function createKeyGetter(isOld, onlyGetId) {\n return function (diffItem) {\n var data = diffItem.data;\n var dataIndex = diffItem.dataIndex;\n // TODO if specified dim\n if (onlyGetId) {\n return data.getId(dataIndex);\n }\n if (isOld) {\n return direction === TRANSITION_P2C ? diffItem.childGroupId : diffItem.groupId;\n } else {\n return direction === TRANSITION_C2P ? diffItem.childGroupId : diffItem.groupId;\n }\n };\n }\n // Use id if it's very likely to be an one to one animation\n // It's more robust than groupId\n // TODO Check if key dimension is specified.\n var useId = isAllIdSame(oldDiffItems, newDiffItems);\n var isElementStillInChart = {};\n if (!useId) {\n // We may have different diff strategy with basicTransition if we use other dimension as key.\n // If so, we can't simply check if oldEl is same with newEl. We need a map to check if oldEl is still being used in the new chart.\n // We can't use the elements that already being morphed. Let it keep it's original basic transition.\n for (var i = 0; i < newDiffItems.length; i++) {\n var newItem = newDiffItems[i];\n var el = newItem.data.getItemGraphicEl(newItem.dataIndex);\n if (el) {\n isElementStillInChart[el.id] = true;\n }\n }\n }\n function updateOneToOne(newIndex, oldIndex) {\n var oldItem = oldDiffItems[oldIndex];\n var newItem = newDiffItems[newIndex];\n var newSeries = newItem.data.hostModel;\n // TODO Mark this elements is morphed and don't morph them anymore\n var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);\n var newEl = newItem.data.getItemGraphicEl(newItem.dataIndex);\n // Can't handle same elements.\n if (oldEl === newEl) {\n newEl && animateElementStyles(newEl, newItem.dataIndex, newSeries);\n return;\n }\n if (\n // We can't use the elements that already being morphed\n oldEl && isElementStillInChart[oldEl.id]) {\n return;\n }\n if (newEl) {\n // TODO: If keep animating the group in case\n // some of the elements don't want to be morphed.\n // TODO Label?\n stopAnimation(newEl);\n if (oldEl) {\n stopAnimation(oldEl);\n // If old element is doing leaving animation. stop it and remove it immediately.\n removeEl(oldEl);\n hasMorphAnimation = true;\n applyMorphAnimation(getPathList(oldEl), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps);\n } else {\n fadeInElement(newEl, newSeries, newIndex);\n }\n }\n // else keep oldEl leaving animation.\n }\n\n new DataDiffer(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, 'multiple').update(updateOneToOne).updateManyToOne(function (newIndex, oldIndices) {\n var newItem = newDiffItems[newIndex];\n var newData = newItem.data;\n var newSeries = newData.hostModel;\n var newEl = newData.getItemGraphicEl(newItem.dataIndex);\n var oldElsList = filter(map(oldIndices, function (idx) {\n return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex);\n }), function (oldEl) {\n return oldEl && oldEl !== newEl && !isElementStillInChart[oldEl.id];\n });\n if (newEl) {\n stopAnimation(newEl);\n if (oldElsList.length) {\n // If old element is doing leaving animation. stop it and remove it immediately.\n each(oldElsList, function (oldEl) {\n stopAnimation(oldEl);\n removeEl(oldEl);\n });\n hasMorphAnimation = true;\n applyMorphAnimation(getPathList(oldElsList), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps);\n } else {\n fadeInElement(newEl, newSeries, newItem.dataIndex);\n }\n }\n // else keep oldEl leaving animation.\n }).updateOneToMany(function (newIndices, oldIndex) {\n var oldItem = oldDiffItems[oldIndex];\n var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);\n // We can't use the elements that already being morphed\n if (oldEl && isElementStillInChart[oldEl.id]) {\n return;\n }\n var newElsList = filter(map(newIndices, function (idx) {\n return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex);\n }), function (el) {\n return el && el !== oldEl;\n });\n var newSeris = newDiffItems[newIndices[0]].data.hostModel;\n if (newElsList.length) {\n each(newElsList, function (newEl) {\n return stopAnimation(newEl);\n });\n if (oldEl) {\n stopAnimation(oldEl);\n // If old element is doing leaving animation. stop it and remove it immediately.\n removeEl(oldEl);\n hasMorphAnimation = true;\n applyMorphAnimation(getPathList(oldEl), getPathList(newElsList), oldItem.divide,\n // Use divide on old.\n newSeris, newIndices[0], updateMorphingPathProps);\n } else {\n each(newElsList, function (newEl) {\n return fadeInElement(newEl, newSeris, newIndices[0]);\n });\n }\n }\n // else keep oldEl leaving animation.\n }).updateManyToMany(function (newIndices, oldIndices) {\n // If two data are same and both have groupId.\n // Normally they should be diff by id.\n new DataDiffer(oldIndices, newIndices, function (rawIdx) {\n return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex);\n }, function (rawIdx) {\n return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex);\n }).update(function (newIndex, oldIndex) {\n // Use the original index\n updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]);\n }).execute();\n }).execute();\n if (hasMorphAnimation) {\n each(newList, function (_a) {\n var data = _a.data;\n var seriesModel = data.hostModel;\n var view = seriesModel && api.getViewOfSeriesModel(seriesModel);\n var animationCfg = getAnimationConfig('update', seriesModel, 0); // use 0 index.\n if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) {\n view.group.traverse(function (el) {\n if (el instanceof Path && !el.animators.length) {\n // We can't accept there still exists element that has no animation\n // if universalTransition is enabled\n el.animateFrom({\n style: {\n opacity: 0\n }\n }, animationCfg);\n }\n });\n }\n });\n }\n}\nfunction getSeriesTransitionKey(series) {\n var seriesKey = series.getModel('universalTransition').get('seriesKey');\n if (!seriesKey) {\n // Use series id by default.\n return series.id;\n }\n return seriesKey;\n}\nfunction convertArraySeriesKeyToString(seriesKey) {\n if (isArray(seriesKey)) {\n // Order independent.\n return seriesKey.sort().join(',');\n }\n return seriesKey;\n}\nfunction getDivideShapeFromData(data) {\n if (data.hostModel) {\n return data.hostModel.getModel('universalTransition').get('divideShape');\n }\n}\nfunction findTransitionSeriesBatches(globalStore, params) {\n var updateBatches = createHashMap();\n var oldDataMap = createHashMap();\n // Map that only store key in array seriesKey.\n // Which is used to query the old data when transition from one to multiple series.\n var oldDataMapForSplit = createHashMap();\n each(globalStore.oldSeries, function (series, idx) {\n var oldDataGroupId = globalStore.oldDataGroupIds[idx];\n var oldData = globalStore.oldData[idx];\n var transitionKey = getSeriesTransitionKey(series);\n var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);\n oldDataMap.set(transitionKeyStr, {\n dataGroupId: oldDataGroupId,\n data: oldData\n });\n if (isArray(transitionKey)) {\n // Same key can't in different array seriesKey.\n each(transitionKey, function (key) {\n oldDataMapForSplit.set(key, {\n key: transitionKeyStr,\n dataGroupId: oldDataGroupId,\n data: oldData\n });\n });\n }\n });\n function checkTransitionSeriesKeyDuplicated(transitionKeyStr) {\n if (updateBatches.get(transitionKeyStr)) {\n warn(\"Duplicated seriesKey in universalTransition \" + transitionKeyStr);\n }\n }\n each(params.updatedSeries, function (series) {\n if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {\n var newDataGroupId = series.get('dataGroupId');\n var newData = series.getData();\n var transitionKey = getSeriesTransitionKey(series);\n var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);\n // Only transition between series with same id.\n var oldData = oldDataMap.get(transitionKeyStr);\n // string transition key is the best match.\n if (oldData) {\n if (process.env.NODE_ENV !== 'production') {\n checkTransitionSeriesKeyDuplicated(transitionKeyStr);\n }\n // TODO check if data is same?\n updateBatches.set(transitionKeyStr, {\n oldSeries: [{\n dataGroupId: oldData.dataGroupId,\n divide: getDivideShapeFromData(oldData.data),\n data: oldData.data\n }],\n newSeries: [{\n dataGroupId: newDataGroupId,\n divide: getDivideShapeFromData(newData),\n data: newData\n }]\n });\n } else {\n // Transition from multiple series.\n // e.g. 'female', 'male' -> ['female', 'male']\n if (isArray(transitionKey)) {\n if (process.env.NODE_ENV !== 'production') {\n checkTransitionSeriesKeyDuplicated(transitionKeyStr);\n }\n var oldSeries_1 = [];\n each(transitionKey, function (key) {\n var oldData = oldDataMap.get(key);\n if (oldData.data) {\n oldSeries_1.push({\n dataGroupId: oldData.dataGroupId,\n divide: getDivideShapeFromData(oldData.data),\n data: oldData.data\n });\n }\n });\n if (oldSeries_1.length) {\n updateBatches.set(transitionKeyStr, {\n oldSeries: oldSeries_1,\n newSeries: [{\n dataGroupId: newDataGroupId,\n data: newData,\n divide: getDivideShapeFromData(newData)\n }]\n });\n }\n } else {\n // Try transition to multiple series.\n // e.g. ['female', 'male'] -> 'female', 'male'\n var oldData_1 = oldDataMapForSplit.get(transitionKey);\n if (oldData_1) {\n var batch = updateBatches.get(oldData_1.key);\n if (!batch) {\n batch = {\n oldSeries: [{\n dataGroupId: oldData_1.dataGroupId,\n data: oldData_1.data,\n divide: getDivideShapeFromData(oldData_1.data)\n }],\n newSeries: []\n };\n updateBatches.set(oldData_1.key, batch);\n }\n batch.newSeries.push({\n dataGroupId: newDataGroupId,\n data: newData,\n divide: getDivideShapeFromData(newData)\n });\n }\n }\n }\n }\n });\n return updateBatches;\n}\nfunction querySeries(series, finder) {\n for (var i = 0; i < series.length; i++) {\n var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id;\n if (found) {\n return i;\n }\n }\n}\nfunction transitionSeriesFromOpt(transitionOpt, globalStore, params, api) {\n var from = [];\n var to = [];\n each(normalizeToArray(transitionOpt.from), function (finder) {\n var idx = querySeries(globalStore.oldSeries, finder);\n if (idx >= 0) {\n from.push({\n dataGroupId: globalStore.oldDataGroupIds[idx],\n data: globalStore.oldData[idx],\n // TODO can specify divideShape in transition.\n divide: getDivideShapeFromData(globalStore.oldData[idx]),\n groupIdDim: finder.dimension\n });\n }\n });\n each(normalizeToArray(transitionOpt.to), function (finder) {\n var idx = querySeries(params.updatedSeries, finder);\n if (idx >= 0) {\n var data = params.updatedSeries[idx].getData();\n to.push({\n dataGroupId: globalStore.oldDataGroupIds[idx],\n data: data,\n divide: getDivideShapeFromData(data),\n groupIdDim: finder.dimension\n });\n }\n });\n if (from.length > 0 && to.length > 0) {\n transitionBetween(from, to, api);\n }\n}\nexport function installUniversalTransition(registers) {\n registers.registerUpdateLifecycle('series:beforeupdate', function (ecMOdel, api, params) {\n each(normalizeToArray(params.seriesTransition), function (transOpt) {\n each(normalizeToArray(transOpt.to), function (finder) {\n var series = params.updatedSeries;\n for (var i = 0; i < series.length; i++) {\n if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) {\n series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true;\n }\n }\n });\n });\n });\n registers.registerUpdateLifecycle('series:transition', function (ecModel, api, params) {\n // TODO api provide an namespace that can save stuff per instance\n var globalStore = getUniversalTransitionGlobalStore(api);\n // TODO multiple to multiple series.\n if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) {\n // TODO transitionOpt was used in an old implementation and can be removed now\n // Use give transition config if its' give;\n var transitionOpt = params.seriesTransition;\n if (transitionOpt) {\n each(normalizeToArray(transitionOpt), function (opt) {\n transitionSeriesFromOpt(opt, globalStore, params, api);\n });\n } else {\n // Else guess from series based on transition series key.\n var updateBatches_1 = findTransitionSeriesBatches(globalStore, params);\n each(updateBatches_1.keys(), function (key) {\n var batch = updateBatches_1.get(key);\n transitionBetween(batch.oldSeries, batch.newSeries, api);\n });\n }\n // Reset\n each(params.updatedSeries, function (series) {\n // Reset;\n if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) {\n series[SERIES_UNIVERSAL_TRANSITION_PROP] = false;\n }\n });\n }\n // Save all series of current update. Not only the updated one.\n var allSeries = ecModel.getSeries();\n var savedSeries = globalStore.oldSeries = [];\n var savedDataGroupIds = globalStore.oldDataGroupIds = [];\n var savedData = globalStore.oldData = [];\n for (var i = 0; i < allSeries.length; i++) {\n var data = allSeries[i].getData();\n // Only save the data that can have transition.\n // Avoid large data costing too much extra memory\n if (data.count() < DATA_COUNT_THRESHOLD) {\n savedSeries.push(allSeries[i]);\n savedDataGroupIds.push(allSeries[i].get('dataGroupId'));\n savedData.push(data);\n }\n }\n });\n}","@import '../../styles/host.scss';\n\n:host {\n width: var(--tct-area-chart-width, 100%);\n height: var(--tct-area-chart-height, 100%);\n display: block;\n}\n\n.container {\n width: 100%;\n height: 100%;\n}\n\n.chart-container {\n width: 100%;\n height: 100%;\n}\n","import { Component, Prop, h, ComponentInterface, Element, Watch, EventEmitter, Event } from '@stencil/core';\nimport * as echarts from 'echarts/core';\nimport {\n TitleComponent,\n TitleComponentOption,\n AriaComponent,\n AriaComponentOption,\n GridComponent,\n} from 'echarts/components';\nimport { LineChart, LineSeriesOption } from 'echarts/charts';\nimport { UniversalTransition } from 'echarts/features';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { loc, overrideFocus } from 'src/utils';\nimport { getCSSProperty, isValidColor, formatValue } from 'src/utils/charting';\nimport { IChartData } from 'q2-tecton-common/lib/types/element-types';\n\necharts.use([AriaComponent, LineChart, CanvasRenderer, UniversalTransition, GridComponent, TitleComponent]);\n\ntype EChartsOption = echarts.ComposeOption<AriaComponentOption | LineSeriesOption | TitleComponentOption>;\n\n@Component({ tag: 'q2-chart-area', shadow: true, styleUrl: 'q2-chart-area.scss' })\nexport class Q2ChartArea implements ComponentInterface {\n // #region Own Properties\n\n chart: echarts.ECharts;\n chartContainer: HTMLDivElement;\n chartContainerStyles: CSSStyleDeclaration;\n hostElementStyles: CSSStyleDeclaration;\n resizeEventListener: EventListener;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** Controls alignment of the chart name when its visible. */\n @Prop({ reflect: true })\n alignChartName: 'left' | 'right' | 'center';\n\n /**\n * Controls area fill color of chart. Accepts variables, hex codes, and CSS color names.\n *\n * **Examples:**\n * @snippet\n * element.areaColor = \"#ff0000\";\n * element.areaColor = \"papayawhip\";\n * element.areaColor = \"var(--t-accent-1)\";\n */\n @Prop({ reflect: true })\n areaColor: string;\n\n /**\n * The title of the chart. We recommend always including this for accessibility purposes.\n *\n * It is hidden by default, but can be made visible with the `showChartName` variable.\n * @localizable\n */\n @Prop({ reflect: true })\n chartName: string;\n\n /** A subtitile to the chart name. Often used to provide a brief description of what the data represents. */\n @Prop({ reflect: true })\n chartSubTitle: string;\n\n /** An array of objects that contain the data to be displayed. */\n @Prop()\n data: IChartData[] = [];\n\n /**\n * Allows control of how labels on the name axis will be handled if the text length is wider than the available space.\n * Values will ellipsize if the truncate option is used.\n */\n @Prop({ reflect: true })\n dataNamesOverflow: 'break' | 'truncate';\n\n /**\n * Sets width available for labels on the name axis.\n * It can be used in coordination with `dataNamesOverflow` to control where the label text breaks or truncates.\n */\n @Prop({ reflect: true })\n dataNamesWidth: number;\n\n /** Controls whether values on the value axis are shown as numbers or as currency. */\n @Prop({ reflect: true })\n format: 'currency' | 'default';\n\n /**\n * Can be used in coordination with the currency format property to control decimal handling.\n * Accepts `Ndec` where N is a number. (e.g. `2dec`)\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /** Controls the direction or viibility of grid lines on the chart. */\n @Prop({ reflect: true })\n gridLines: 'horizontal' | 'vertical' | 'off';\n\n /** Controls visibility of labels on the name axis. */\n @Prop({ reflect: true })\n hideNameAxisLabels: boolean = false;\n\n /** Controls visibility of labels on the value axis. */\n @Prop({ reflect: true })\n hideValueAxisLabels: boolean = false;\n\n /**\n * Sets chart padding around the grid.\n * Accepts an object: { left?: number; right?: number; top?: number; bottom?: number; }\n * Each field in the object expecting a number as pixel unit\n * **Examples:**\n * @snippet\n * chart.gridPadding = { left: 10, right: 10, top: 20, bottom: 20 };\n */\n @Prop({ reflect: true })\n gridPadding: { left?: number; right?: number; top?: number; bottom?: number };\n\n /**\n * Controls color of the data line on the chart. Accepts variables, hex codes, and CSS color names.\n *\n * **Examples:**\n * @snippet\n * element.areaColor = \"#ff0000\";\n * element.areaColor = \"papayawhip\";\n * element.areaColor = \"var(--t-accent-1)\";\n */\n @Prop({ reflect: true })\n lineColor: string;\n\n /**\n * Controls the position of text on the names axis by centering the text to the bar at a 45° angle.\n * Can be used when space is limited or with longer name labels.\n */\n @Prop({ reflect: true })\n offsetDataNames: boolean = false;\n\n /**\n * Controls the position of text on the values axis by centering the text to the bar at a 45° angle.\n * Can be used when space is limited or with longer name labels.\n */\n @Prop({ reflect: true })\n offsetDataValues: boolean = false;\n\n /**\n * Controls color of vertical pointer on a line chart. Accepts variables, hex codes, and CSS color names.\n *\n * **Examples:**\n * @snippet\n * element.areaColor = \"#ff0000\";\n * element.areaColor = \"papayawhip\";\n * element.areaColor = \"var(--t-accent-1)\";\n */\n @Prop({ reflect: true })\n pointerLineColor: string;\n\n /** Controls the style of the vertical poiner line. */\n @Prop({ reflect: true })\n pointerLineStyle: 'solid' | 'dashed';\n\n /** Controls the visibility of the chart name at the top of the chart. */\n @Prop({ reflect: true })\n showChartName: boolean = false;\n\n /** Controls the visibility of a value label when a data point is shown on the chart. */\n @Prop({ reflect: true })\n showDatapointLabels: boolean = false;\n\n /**\n * Controls making the area fill color into a gradient.\n * The gradient starts at the top with the `areaColor` value, and fades to white.\n */\n @Prop({ reflect: true })\n showGradient: boolean = false;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when a data point is clicked.\n */\n @Event()\n change: EventEmitter<{\n index: number;\n data: IChartData;\n }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.resizeEventListener);\n }\n\n componentDidLoad() {\n const chart = echarts.init(this.chartContainer);\n\n this.chart = chart;\n\n this.resizeEventListener = () => this.resizeChart();\n window.addEventListener('resize', this.resizeEventListener);\n\n this.cacheComputedStyles();\n this.updateChart(chart);\n this.setupChartEvents(chart);\n\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('data')\n @Watch('alignChartName')\n @Watch('chartName')\n @Watch('chartSubTitle')\n @Watch('lineColor')\n @Watch('pointerLineColor')\n @Watch('pointerLineStyle')\n @Watch('areaColor')\n @Watch('dataNamesOverflow')\n @Watch('dataNamesWidth')\n @Watch('format')\n @Watch('formatModifier')\n @Watch('hideNameAxisLabels')\n @Watch('hideValueAxisLabels')\n @Watch('offsetDataNames')\n @Watch('offsetDataValues')\n @Watch('showChartName')\n @Watch('showDatapointLabels')\n @Watch('showGradient')\n @Watch('gridLines')\n @Watch('gridPadding')\n propsUpdates() {\n this.updateChart(this.chart);\n }\n\n // #endregion\n // #region Local Methods\n\n cacheComputedStyles() {\n this.chartContainerStyles = getComputedStyle(this.chartContainer);\n this.hostElementStyles = getComputedStyle(this.hostElement);\n }\n\n getAreaFill() {\n if (this.showGradient) {\n return {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n {\n offset: 0,\n color: this.getColor(this.areaColor),\n },\n {\n offset: 1,\n color: 'white',\n },\n ],\n global: false,\n };\n }\n return this.getColor(this.areaColor);\n }\n\n getColor(color: string) {\n const primaryColor = getCSSProperty('var(--t-primary)', this.chartContainerStyles, this.hostElementStyles);\n const cssColorProp = getCSSProperty(color, this.chartContainerStyles, this.hostElementStyles);\n if (cssColorProp) return cssColorProp;\n if (isValidColor(color)) return color;\n return primaryColor;\n }\n\n resizeChart() {\n this.chart.resize();\n }\n\n setupChartEvents(chart: echarts.ECharts) {\n chart.on('finished', () => {\n const canvas = chart.getDom().querySelector('canvas');\n if (canvas?.hasAttribute('aria-hidden') ?? false) return;\n canvas.setAttribute('aria-hidden', 'true');\n });\n }\n\n updateChart(chart: echarts.ECharts) {\n const decimals = this.formatModifier?.includes('dec') ? this.formatModifier.replace('dec', '') : 0;\n\n const valueAxis = {\n type: 'value',\n axisLabel: {\n formatter: (value: number) =>\n formatValue(value, {\n type: this.format,\n decimals,\n }),\n rotate: this.offsetDataValues ? 45 : 0,\n margin: this.offsetDataValues ? 15 : 8,\n show: !this.hideValueAxisLabels,\n },\n splitLine: {\n show: this.gridLines === 'horizontal' || !this.gridLines,\n },\n };\n\n const categoryAxis = {\n type: 'category',\n boundaryGap: false,\n data: this.data.map(datum => loc(datum.name) || ''),\n axisLabel: {\n rotate: this.offsetDataNames ? 45 : 0,\n margin: this.offsetDataNames ? 15 : 8,\n width: this.dataNamesWidth || 50,\n overflow: this.dataNamesOverflow || 'none',\n truncate: 'ellipsis',\n show: !this.hideNameAxisLabels,\n },\n axisLine: {\n show: !this.hideNameAxisLabels,\n },\n axisTick: {\n show: !this.hideNameAxisLabels,\n },\n axisPointer: {\n show: true,\n type: 'line',\n label: {\n show: false,\n formatter: (params: any) => {\n const dataIndex = params.seriesData[0].dataIndex;\n this.change.emit({\n index: dataIndex,\n data: this.data[dataIndex],\n });\n },\n },\n lineStyle: {\n color: this.getColor(this.pointerLineColor || 'var(--t-gray-10)'),\n type: this.pointerLineStyle || 'solid',\n width: 1.5,\n },\n z: 1,\n },\n splitLine: {\n show: this.gridLines === 'vertical',\n },\n };\n\n return chart.setOption<EChartsOption>({\n aria: {\n enabled: true,\n },\n title: {\n text: loc(this.chartName),\n show: this.showChartName,\n left: this.alignChartName,\n subtext: this.chartSubTitle,\n },\n grid: {\n containLabel: true,\n ...this.gridPadding,\n },\n xAxis: categoryAxis,\n yAxis: valueAxis,\n series: [\n {\n data: this.data.map(datum => datum.value || 0),\n id: 'area',\n type: 'line',\n lineStyle: {\n color: this.getColor(this.lineColor),\n },\n itemStyle: {\n color: this.getColor(this.lineColor),\n },\n areaStyle: {\n color: this.getAreaFill(),\n },\n symbolSize: 10,\n showSymbol: false,\n label: {\n show: this.showDatapointLabels,\n position: 'right',\n formatter: (params: any) => {\n return formatValue(params.value as number, {\n type: this.format,\n decimals,\n });\n },\n },\n },\n ],\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div class=\"container\">\n <div\n ref={el => (this.chartContainer = el)}\n class=\"chart-container\"\n role=\"img\"\n test-id=\"areaChartContainer\"\n ></div>\n </div>\n );\n }\n\n // #endregion\n}\n"],"version":3}
|
|
1
|
+
{"file":"q2-chart-area.js","mappings":"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","names":["graphic.updateProps","graphic.initProps","graphic.removeElement","graphic.Group","graphic.traverseElements","isPointNull","zrUtil.isNumber","zrUtil.map","zrUtil.each","graphic.LinearGradient","SymbolDraw","zrUtil.defaults","modelUtil.queryDataIndex","zrUtil.isFunction","graphic.Text","modelUtil.interpolateRawValues","LineView","layoutPoints","lerp","echarts.use","AriaComponent","LineChart","CanvasRenderer","UniversalTransition","GridComponent","TitleComponent","Q2ChartArea","echarts.init"],"sources":["../../node_modules/echarts/lib/chart/helper/Symbol.js","../../node_modules/echarts/lib/chart/helper/SymbolDraw.js","../../node_modules/echarts/lib/chart/line/LineSeries.js","../../node_modules/echarts/lib/chart/line/helper.js","../../node_modules/echarts/lib/chart/line/lineAnimationDiff.js","../../node_modules/echarts/lib/chart/line/poly.js","../../node_modules/echarts/lib/chart/line/LineView.js","../../node_modules/echarts/lib/layout/points.js","../../node_modules/echarts/lib/chart/line/install.js","../../node_modules/zrender/lib/tool/convertPath.js","../../node_modules/zrender/lib/tool/dividePath.js","../../node_modules/zrender/lib/tool/morphPath.js","../../node_modules/echarts/lib/animation/morphTransitionHelper.js","../../node_modules/echarts/lib/animation/universalTransition.js","src/components/q2-chart-area/q2-chart-area.scss?tag=q2-chart-area&encapsulation=shadow","src/components/q2-chart-area/q2-chart-area.tsx"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { createSymbol, normalizeSymbolOffset, normalizeSymbolSize } from '../../util/symbol.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { enterEmphasis, leaveEmphasis, toggleHoverEmphasis } from '../../util/states.js';\nimport { getDefaultLabel } from './labelHelper.js';\nimport { extend } from 'zrender/lib/core/util.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nvar Symbol = /** @class */function (_super) {\n __extends(Symbol, _super);\n function Symbol(data, idx, seriesScope, opts) {\n var _this = _super.call(this) || this;\n _this.updateData(data, idx, seriesScope, opts);\n return _this;\n }\n Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n // let symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n });\n // Rewrite drift method\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n };\n /**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(null, toLastFrame);\n };\n Symbol.prototype.getSymbolType = function () {\n return this._symbolType;\n };\n /**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n Symbol.prototype.getSymbolPath = function () {\n return this.childAt(0);\n };\n /**\n * Highlight symbol\n */\n Symbol.prototype.highlight = function () {\n enterEmphasis(this.childAt(0));\n };\n /**\n * Downplay symbol\n */\n Symbol.prototype.downplay = function () {\n leaveEmphasis(this.childAt(0));\n };\n /**\n * @param {number} zlevel\n * @param {number} z\n */\n Symbol.prototype.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n };\n Symbol.prototype.setDraggable = function (draggable, hasCursorOption) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = !hasCursorOption && draggable ? 'move' : symbolPath.cursor;\n };\n /**\n * Update symbol properties\n */\n Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = Symbol.getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n var disableAnimation = opts && opts.disableAnimation;\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n var target = {\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n };\n disableAnimation ? symbolPath.attr(target) : graphic.updateProps(symbolPath, target, seriesModel, idx);\n saveOldStyle(symbolPath);\n }\n this._updateCommon(data, idx, symbolSize, seriesScope, opts);\n if (isInit) {\n var symbolPath = this.childAt(0);\n if (!disableAnimation) {\n var target = {\n scaleX: this._sizeX,\n scaleY: this._sizeY,\n style: {\n // Always fadeIn. Because it has fadeOut animation when symbol is removed..\n opacity: symbolPath.style.opacity\n }\n };\n symbolPath.scaleX = symbolPath.scaleY = 0;\n symbolPath.style.opacity = 0;\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n }\n if (disableAnimation) {\n // Must stop leave transition manually if don't call initProps or updateProps.\n this.childAt(0).stopAnimation('leave');\n }\n };\n Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var emphasisItemStyle;\n var blurItemStyle;\n var selectItemStyle;\n var focus;\n var blurScope;\n var emphasisDisabled;\n var labelStatesModels;\n var hoverScale;\n var cursorStyle;\n if (seriesScope) {\n emphasisItemStyle = seriesScope.emphasisItemStyle;\n blurItemStyle = seriesScope.blurItemStyle;\n selectItemStyle = seriesScope.selectItemStyle;\n focus = seriesScope.focus;\n blurScope = seriesScope.blurScope;\n labelStatesModels = seriesScope.labelStatesModels;\n hoverScale = seriesScope.hoverScale;\n cursorStyle = seriesScope.cursorStyle;\n emphasisDisabled = seriesScope.emphasisDisabled;\n }\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\n blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n focus = emphasisModel.get('focus');\n blurScope = emphasisModel.get('blurScope');\n emphasisDisabled = emphasisModel.get('disabled');\n labelStatesModels = getLabelStatesModels(itemModel);\n hoverScale = emphasisModel.getShallow('scale');\n cursorStyle = itemModel.getShallow('cursor');\n }\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize);\n if (symbolOffset) {\n symbolPath.x = symbolOffset[0];\n symbolPath.y = symbolOffset[1];\n }\n cursorStyle && symbolPath.attr('cursor', cursorStyle);\n var symbolStyle = data.getItemVisual(idx, 'style');\n var visualColor = symbolStyle.fill;\n if (symbolPath instanceof ZRImage) {\n var pathStyle = symbolPath.style;\n symbolPath.useStyle(extend({\n // TODO other properties like x, y ?\n image: pathStyle.image,\n x: pathStyle.x,\n y: pathStyle.y,\n width: pathStyle.width,\n height: pathStyle.height\n }, symbolStyle));\n } else {\n if (symbolPath.__isEmptyBrush) {\n // fill and stroke will be swapped if it's empty.\n // So we cloned a new style to avoid it affecting the original style in visual storage.\n // TODO Better implementation. No empty logic!\n symbolPath.useStyle(extend({}, symbolStyle));\n } else {\n symbolPath.useStyle(symbolStyle);\n }\n // Disable decal because symbol scale will been applied on the decal.\n symbolPath.style.decal = null;\n symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\n symbolPath.style.strokeNoScale = true;\n }\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = this._z2;\n if (liftZ != null) {\n if (z2Origin == null) {\n this._z2 = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n this._z2 = null;\n }\n var useNameLabel = opts && opts.useNameLabel;\n setLabelStyle(symbolPath, labelStatesModels, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n inheritColor: visualColor,\n defaultOpacity: symbolStyle.opacity\n });\n // Do not execute util needed.\n function getLabelDefaultText(idx) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n this._sizeX = symbolSize[0] / 2;\n this._sizeY = symbolSize[1] / 2;\n var emphasisState = symbolPath.ensureState('emphasis');\n emphasisState.style = emphasisItemStyle;\n symbolPath.ensureState('select').style = selectItemStyle;\n symbolPath.ensureState('blur').style = blurItemStyle;\n // null / undefined / true means to use default strategy.\n // 0 / false / negative number / NaN / Infinity means no scale.\n var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY)\n // PENDING: restrict hoverScale > 1? It seems unreasonable to scale down\n : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1;\n // always set scale to allow resetting\n emphasisState.scaleX = this._sizeX * scaleRatio;\n emphasisState.scaleY = this._sizeY * scaleRatio;\n this.setSymbolScale(1);\n toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n };\n Symbol.prototype.setSymbolScale = function (scale) {\n this.scaleX = this.scaleY = scale;\n };\n Symbol.prototype.fadeOut = function (cb, seriesModel, opt) {\n var symbolPath = this.childAt(0);\n var dataIndex = getECData(this).dataIndex;\n var animationOpt = opt && opt.animation;\n // Avoid mistaken hover when fading out\n this.silent = symbolPath.silent = true;\n // Not show text when animating\n if (opt && opt.fadeLabel) {\n var textContent = symbolPath.getTextContent();\n if (textContent) {\n graphic.removeElement(textContent, {\n style: {\n opacity: 0\n }\n }, seriesModel, {\n dataIndex: dataIndex,\n removeOpt: animationOpt,\n cb: function () {\n symbolPath.removeTextContent();\n }\n });\n }\n } else {\n symbolPath.removeTextContent();\n }\n graphic.removeElement(symbolPath, {\n style: {\n opacity: 0\n },\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: dataIndex,\n cb: cb,\n removeOpt: animationOpt\n });\n };\n Symbol.getSymbolSize = function (data, idx) {\n return normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n };\n return Symbol;\n}(graphic.Group);\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\nexport default Symbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as graphic from '../../util/graphic.js';\nimport SymbolClz from './Symbol.js';\nimport { isObject } from 'zrender/lib/core/util.js';\nimport { getLabelStatesModels } from '../../label/labelStyle.js';\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx))\n // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n return opt || {};\n}\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n var emphasisModel = seriesModel.getModel('emphasis');\n return {\n emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\n blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\n selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\n focus: emphasisModel.get('focus'),\n blurScope: emphasisModel.get('blurScope'),\n emphasisDisabled: emphasisModel.get('disabled'),\n hoverScale: emphasisModel.get('scale'),\n labelStatesModels: getLabelStatesModels(seriesModel),\n cursorStyle: seriesModel.get('cursor')\n };\n}\nvar SymbolDraw = /** @class */function () {\n function SymbolDraw(SymbolCtor) {\n this.group = new graphic.Group();\n this._SymbolCtor = SymbolCtor || SymbolClz;\n }\n /**\n * Update symbols draw by new data\n */\n SymbolDraw.prototype.updateData = function (data, opt) {\n // Remove progressive els.\n this._progressiveEls = null;\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._SymbolCtor;\n var disableAnimation = opt.disableAnimation;\n var seriesScope = makeSeriesScope(data);\n var symbolUpdateOpt = {\n disableAnimation: disableAnimation\n };\n var getSymbolPoint = opt.getSymbolPoint || function (idx) {\n return data.getItemLayout(idx);\n };\n // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n if (!oldData) {\n group.removeAll();\n }\n data.diff(oldData).add(function (newIdx) {\n var point = getSymbolPoint(newIdx);\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = getSymbolPoint(newIdx);\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n var newSymbolType = data.getItemVisual(newIdx, 'symbol') || 'circle';\n var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType();\n if (!symbolEl\n // Create a new if symbol type changed.\n || oldSymbolType && oldSymbolType !== newSymbolType) {\n group.remove(symbolEl);\n symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\n var target = {\n x: point[0],\n y: point[1]\n };\n disableAnimation ? symbolEl.attr(target) : graphic.updateProps(symbolEl, target, seriesModel);\n }\n // Add back\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n }, seriesModel);\n }).execute();\n this._getSymbolPoint = getSymbolPoint;\n this._data = data;\n };\n ;\n SymbolDraw.prototype.updateLayout = function () {\n var _this = this;\n var data = this._data;\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = _this._getSymbolPoint(idx);\n el.setPosition(point);\n el.markRedraw();\n });\n }\n };\n ;\n SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n };\n ;\n /**\n * Update symbols draw by new data\n */\n SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\n // Clear\n this._progressiveEls = [];\n opt = normalizeUpdateOpt(opt);\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.ensureState('emphasis').hoverLayer = true;\n }\n }\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._SymbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.setPosition(point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n this._progressiveEls.push(el);\n }\n }\n };\n ;\n SymbolDraw.prototype.eachRendered = function (cb) {\n graphic.traverseElements(this._progressiveEls || this.group, cb);\n };\n SymbolDraw.prototype.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data;\n // Incremental model do not have this._data.\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n }, data.hostModel);\n });\n } else {\n group.removeAll();\n }\n };\n ;\n return SymbolDraw;\n}();\nexport default SymbolDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesData from '../helper/createSeriesData.js';\nimport SeriesModel from '../../model/Series.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { Group } from '../../util/graphic.js';\nvar LineSeriesModel = /** @class */function (_super) {\n __extends(LineSeriesModel, _super);\n function LineSeriesModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = LineSeriesModel.type;\n _this.hasSymbolVisual = true;\n return _this;\n }\n LineSeriesModel.prototype.getInitialData = function (option) {\n if (process.env.NODE_ENV !== 'production') {\n var coordSys = option.coordinateSystem;\n if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\n throw new Error('Line not support coordinateSystem besides cartesian and polar');\n }\n }\n return createSeriesData(null, this, {\n useEncodeDefaulter: true\n });\n };\n LineSeriesModel.prototype.getLegendIcon = function (opt) {\n var group = new Group();\n var line = createSymbol('line', 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false);\n group.add(line);\n line.setStyle(opt.lineStyle);\n var visualType = this.getData().getVisual('symbol');\n var visualRotate = this.getData().getVisual('symbolRotate');\n var symbolType = visualType === 'none' ? 'circle' : visualType;\n // Symbol size is 80% when there is a line\n var size = opt.itemHeight * 0.8;\n var symbol = createSymbol(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill);\n group.add(symbol);\n symbol.setStyle(opt.itemStyle);\n var symbolRotate = opt.iconRotate === 'inherit' ? visualRotate : opt.iconRotate || 0;\n symbol.rotation = symbolRotate * Math.PI / 180;\n symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);\n if (symbolType.indexOf('empty') > -1) {\n symbol.style.stroke = symbol.style.fill;\n symbol.style.fill = '#fff';\n symbol.style.lineWidth = 2;\n }\n return group;\n };\n LineSeriesModel.type = 'series.line';\n LineSeriesModel.dependencies = ['grid', 'polar'];\n LineSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 3,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n clip: true,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n endLabel: {\n show: false,\n valueAnimation: true,\n distance: 8\n },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n emphasis: {\n scale: true\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity,\n universalTransition: {\n divideShape: 'clone'\n },\n triggerLineEvent: false\n };\n return LineSeriesModel;\n}(SeriesModel);\nexport default LineSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isDimensionStacked } from '../../data/helper/dataStackHelper.js';\nimport { isNumber, map } from 'zrender/lib/core/util.js';\nexport function prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked = false;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n if (isDimensionStacked(data, dims[0] /* , dims[1] */)) {\n // jshint ignore:line\n stacked = true;\n dims[0] = stackResultDim;\n }\n if (isDimensionStacked(data, dims[1] /* , dims[0] */)) {\n // jshint ignore:line\n stacked = true;\n dims[1] = stackResultDim;\n }\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n }\n // If origin is specified as a number, use it as\n // valueStart directly\n else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {\n valueStart = valueOrigin;\n }\n // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n }\n // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n }\n // If is one positive, and one negative, onZero shall be true\n }\n\n return valueStart;\n}\nexport function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\nexport default function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData);\n // let newIdList = newData.mapArray(newData.getId);\n // let oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n var currPoints = [];\n var nextPoints = [];\n // Points for stacking base line\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n // const oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n var oldPoints = oldData.getLayout('points') || [];\n var newPoints = newData.getLayout('points') || [];\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true;\n var oldIdx2 = void 0;\n var newIdx2 = void 0;\n // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n switch (diffItem.cmd) {\n case '=':\n oldIdx2 = diffItem.idx * 2;\n newIdx2 = diffItem.idx1 * 2;\n var currentX = oldPoints[oldIdx2];\n var currentY = oldPoints[oldIdx2 + 1];\n var nextX = newPoints[newIdx2];\n var nextY = newPoints[newIdx2 + 1];\n // If previous data is NaN, use next point directly\n if (isNaN(currentX) || isNaN(currentY)) {\n currentX = nextX;\n currentY = nextY;\n }\n currPoints.push(currentX, currentY);\n nextPoints.push(nextX, nextY);\n currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n case '+':\n var newIdx = diffItem.idx;\n var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\n var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]);\n newIdx2 = newIdx * 2;\n currPoints.push(oldPt[0], oldPt[1]);\n nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\n var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\n currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n rawIndices.push(newData.getRawIndex(newIdx));\n break;\n case '-':\n pointAdded = false;\n }\n // Original indices\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n }\n // Diff result may be crossed if all items are changed\n // Sort by data index\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var len = currPoints.length;\n var sortedCurrPoints = createFloat32Array(len);\n var sortedNextPoints = createFloat32Array(len);\n var sortedCurrStackedPoints = createFloat32Array(len);\n var sortedNextStackedPoints = createFloat32Array(len);\n var sortedStatus = [];\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n var i2 = i * 2;\n var idx2 = idx * 2;\n sortedCurrPoints[i2] = currPoints[idx2];\n sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\n sortedNextPoints[i2] = nextPoints[idx2];\n sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\n sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\n sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\n sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\n sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\n sortedStatus[i] = status[idx];\n }\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n// Poly path support NaN point\nimport Path from 'zrender/lib/graphic/Path.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { cubicRootAt, cubicAt } from 'zrender/lib/core/curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nfunction isPointNull(x, y) {\n return isNaN(x) || isNaN(y);\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\n var prevX;\n var prevY;\n var cpx0;\n var cpy0;\n var cpx1;\n var cpy1;\n var idx = start;\n var k = 0;\n for (; k < segLen; k++) {\n var x = points[idx * 2];\n var y = points[idx * 2 + 1];\n if (idx >= allLen || idx < 0) {\n break;\n }\n if (isPointNull(x, y)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n break;\n }\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\n cpx0 = x;\n cpy0 = y;\n } else {\n var dx = x - prevX;\n var dy = y - prevY;\n // Ignore tiny segment.\n if (dx * dx + dy * dy < 0.5) {\n idx += dir;\n continue;\n }\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextX = points[nextIdx * 2];\n var nextY = points[nextIdx * 2 + 1];\n // Ignore duplicate point\n while (nextX === x && nextY === y && k < segLen) {\n k++;\n nextIdx += dir;\n idx += dir;\n nextX = points[nextIdx * 2];\n nextY = points[nextIdx * 2 + 1];\n x = points[idx * 2];\n y = points[idx * 2 + 1];\n dx = x - prevX;\n dy = y - prevY;\n }\n var tmpK = k + 1;\n if (connectNulls) {\n // Find next point not null\n while (isPointNull(nextX, nextY) && tmpK < segLen) {\n tmpK++;\n nextIdx += dir;\n nextX = points[nextIdx * 2];\n nextY = points[nextIdx * 2 + 1];\n }\n }\n var ratioNextSeg = 0.5;\n var vx = 0;\n var vy = 0;\n var nextCpx0 = void 0;\n var nextCpy0 = void 0;\n // Is last point\n if (tmpK >= segLen || isPointNull(nextX, nextY)) {\n cpx1 = x;\n cpy1 = y;\n } else {\n vx = nextX - prevX;\n vy = nextY - prevY;\n var dx0 = x - prevX;\n var dx1 = nextX - x;\n var dy0 = y - prevY;\n var dy1 = nextY - y;\n var lenPrevSeg = void 0;\n var lenNextSeg = void 0;\n if (smoothMonotone === 'x') {\n lenPrevSeg = Math.abs(dx0);\n lenNextSeg = Math.abs(dx1);\n var dir_1 = vx > 0 ? 1 : -1;\n cpx1 = x - dir_1 * lenPrevSeg * smooth;\n cpy1 = y;\n nextCpx0 = x + dir_1 * lenNextSeg * smooth;\n nextCpy0 = y;\n } else if (smoothMonotone === 'y') {\n lenPrevSeg = Math.abs(dy0);\n lenNextSeg = Math.abs(dy1);\n var dir_2 = vy > 0 ? 1 : -1;\n cpx1 = x;\n cpy1 = y - dir_2 * lenPrevSeg * smooth;\n nextCpx0 = x;\n nextCpy0 = y + dir_2 * lenNextSeg * smooth;\n } else {\n lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\n lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n // Use ratio of seg length\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n cpx1 = x - vx * smooth * (1 - ratioNextSeg);\n cpy1 = y - vy * smooth * (1 - ratioNextSeg);\n // cp0 of next segment\n nextCpx0 = x + vx * smooth * ratioNextSeg;\n nextCpy0 = y + vy * smooth * ratioNextSeg;\n // Smooth constraint between point and next point.\n // Avoid exceeding extreme after smoothing.\n nextCpx0 = mathMin(nextCpx0, mathMax(nextX, x));\n nextCpy0 = mathMin(nextCpy0, mathMax(nextY, y));\n nextCpx0 = mathMax(nextCpx0, mathMin(nextX, x));\n nextCpy0 = mathMax(nextCpy0, mathMin(nextY, y));\n // Reclaculate cp1 based on the adjusted cp0 of next seg.\n vx = nextCpx0 - x;\n vy = nextCpy0 - y;\n cpx1 = x - vx * lenPrevSeg / lenNextSeg;\n cpy1 = y - vy * lenPrevSeg / lenNextSeg;\n // Smooth constraint between point and prev point.\n // Avoid exceeding extreme after smoothing.\n cpx1 = mathMin(cpx1, mathMax(prevX, x));\n cpy1 = mathMin(cpy1, mathMax(prevY, y));\n cpx1 = mathMax(cpx1, mathMin(prevX, x));\n cpy1 = mathMax(cpy1, mathMin(prevY, y));\n // Adjust next cp0 again.\n vx = x - cpx1;\n vy = y - cpy1;\n nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\n nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\n }\n }\n ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\n cpx0 = nextCpx0;\n cpy0 = nextCpy0;\n } else {\n ctx.lineTo(x, y);\n }\n }\n prevX = x;\n prevY = y;\n idx += dir;\n }\n return k;\n}\nvar ECPolylineShape = /** @class */function () {\n function ECPolylineShape() {\n this.smooth = 0;\n this.smoothConstraint = true;\n }\n return ECPolylineShape;\n}();\nvar ECPolyline = /** @class */function (_super) {\n __extends(ECPolyline, _super);\n function ECPolyline(opts) {\n var _this = _super.call(this, opts) || this;\n _this.type = 'ec-polyline';\n return _this;\n }\n ECPolyline.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n ECPolyline.prototype.getDefaultShape = function () {\n return new ECPolylineShape();\n };\n ECPolyline.prototype.buildPath = function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length / 2;\n // const result = getBoundingBox(points, shape.smoothConstraint);\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n for (; i < len; i++) {\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n break;\n }\n }\n }\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n };\n ECPolyline.prototype.getPointOn = function (xOrY, dim) {\n if (!this.path) {\n this.createPathProxy();\n this.buildPath(this.path, this.shape);\n }\n var path = this.path;\n var data = path.data;\n var CMD = PathProxy.CMD;\n var x0;\n var y0;\n var isDimX = dim === 'x';\n var roots = [];\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n var x = void 0;\n var y = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var x3 = void 0;\n var y3 = void 0;\n var t = void 0;\n switch (cmd) {\n case CMD.M:\n x0 = data[i++];\n y0 = data[i++];\n break;\n case CMD.L:\n x = data[i++];\n y = data[i++];\n t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0);\n if (t <= 1 && t >= 0) {\n var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0;\n return isDimX ? [xOrY, val] : [val, xOrY];\n }\n x0 = x;\n y0 = y;\n break;\n case CMD.C:\n x = data[i++];\n y = data[i++];\n x2 = data[i++];\n y2 = data[i++];\n x3 = data[i++];\n y3 = data[i++];\n var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots) : cubicRootAt(y0, y, y2, y3, xOrY, roots);\n if (nRoot > 0) {\n for (var i_1 = 0; i_1 < nRoot; i_1++) {\n var t_1 = roots[i_1];\n if (t_1 <= 1 && t_1 >= 0) {\n var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1);\n return isDimX ? [xOrY, val] : [val, xOrY];\n }\n }\n }\n x0 = x3;\n y0 = y3;\n break;\n }\n }\n };\n return ECPolyline;\n}(Path);\nexport { ECPolyline };\nvar ECPolygonShape = /** @class */function (_super) {\n __extends(ECPolygonShape, _super);\n function ECPolygonShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ECPolygonShape;\n}(ECPolylineShape);\nvar ECPolygon = /** @class */function (_super) {\n __extends(ECPolygon, _super);\n function ECPolygon(opts) {\n var _this = _super.call(this, opts) || this;\n _this.type = 'ec-polygon';\n return _this;\n }\n ECPolygon.prototype.getDefaultShape = function () {\n return new ECPolygonShape();\n };\n ECPolygon.prototype.buildPath = function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length / 2;\n var smoothMonotone = shape.smoothMonotone;\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n for (; i < len; i++) {\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n break;\n }\n }\n }\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n };\n return ECPolygon;\n}(Path);\nexport { ECPolygon };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n// FIXME step not support polar\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport SymbolClz from '../helper/Symbol.js';\nimport lineAnimationDiff from './lineAnimationDiff.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as modelUtil from '../../util/model.js';\nimport { ECPolyline, ECPolygon } from './poly.js';\nimport ChartView from '../../view/Chart.js';\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createGridClipPath, createPolarClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { setStatesStylesFromModel, setStatesFlag, toggleHoverEmphasis, SPECIAL_STATES } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels, labelInner } from '../../label/labelStyle.js';\nimport { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nimport { convertToColorString } from '../../util/format.js';\nimport { lerp } from 'zrender/lib/tool/color.js';\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n for (var i = 0; i < points1.length; i++) {\n if (points1[i] !== points2[i]) {\n return;\n }\n }\n return true;\n}\nfunction bboxFromPoints(points) {\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n if (!isNaN(x)) {\n minX = Math.min(x, minX);\n maxX = Math.max(x, maxX);\n }\n if (!isNaN(y)) {\n minY = Math.min(y, minY);\n maxY = Math.max(y, maxY);\n }\n }\n return [[minX, minY], [maxX, maxY]];\n}\nfunction getBoundingDiff(points1, points2) {\n var _a = bboxFromPoints(points1),\n min1 = _a[0],\n max1 = _a[1];\n var _b = bboxFromPoints(points2),\n min2 = _b[0],\n max2 = _b[1];\n // Get a max value from each corner of two boundings.\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\nfunction getSmooth(smooth) {\n return zrUtil.isNumber(smooth) ? smooth : smooth ? 0.5 : 0;\n}\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n var len = data.count();\n var points = createFloat32Array(len * 2);\n for (var idx = 0; idx < len; idx++) {\n var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\n points[idx * 2] = pt[0];\n points[idx * 2 + 1] = pt[1];\n }\n return points;\n}\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt, connectNulls) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n var i = 0;\n var stepPt = [];\n var pt = [];\n var nextPt = [];\n var filteredPoints = [];\n if (connectNulls) {\n for (i = 0; i < points.length; i += 2) {\n if (!isNaN(points[i]) && !isNaN(points[i + 1])) {\n filteredPoints.push(points[i], points[i + 1]);\n }\n }\n points = filteredPoints;\n }\n for (i = 0; i < points.length - 2; i += 2) {\n nextPt[0] = points[i + 2];\n nextPt[1] = points[i + 3];\n pt[0] = points[i];\n pt[1] = points[i + 1];\n stepPoints.push(pt[0], pt[1]);\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n break;\n case 'middle':\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n stepPoints.push(stepPt2[0], stepPt2[1]);\n break;\n default:\n // default is start\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n }\n }\n // Last points\n stepPoints.push(points[i++], points[i++]);\n return stepPoints;\n}\n/**\n * Clip color stops to edge. Avoid creating too large gradients.\n * Which may lead to blurry when GPU acceleration is enabled. See #15680\n *\n * The stops has been sorted from small to large.\n */\nfunction clipColorStops(colorStops, maxSize) {\n var newColorStops = [];\n var len = colorStops.length;\n // coord will always < 0 in prevOutOfRangeColorStop.\n var prevOutOfRangeColorStop;\n var prevInRangeColorStop;\n function lerpStop(stop0, stop1, clippedCoord) {\n var coord0 = stop0.coord;\n var p = (clippedCoord - coord0) / (stop1.coord - coord0);\n var color = lerp(p, [stop0.color, stop1.color]);\n return {\n coord: clippedCoord,\n color: color\n };\n }\n for (var i = 0; i < len; i++) {\n var stop_1 = colorStops[i];\n var coord = stop_1.coord;\n if (coord < 0) {\n prevOutOfRangeColorStop = stop_1;\n } else if (coord > maxSize) {\n if (prevInRangeColorStop) {\n newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));\n } else if (prevOutOfRangeColorStop) {\n // If there are two stops and coord range is between these two stops\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));\n }\n // All following stop will be out of range. So just ignore them.\n break;\n } else {\n if (prevOutOfRangeColorStop) {\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0));\n // Reset\n prevOutOfRangeColorStop = null;\n }\n newColorStops.push(stop_1);\n prevInRangeColorStop = stop_1;\n }\n }\n return newColorStops;\n}\nfunction getVisualGradient(data, coordSys, api) {\n var visualMetaList = data.getVisual('visualMeta');\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n if (coordSys.type !== 'cartesian2d') {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style is only supported on cartesian2d.');\n }\n return;\n }\n var coordDim;\n var visualMeta;\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);\n coordDim = dimInfo && dimInfo.coordDim;\n // Can only be x or y\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n if (!visualMeta) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style only support x or y dimension.');\n }\n return;\n }\n // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n var axis = coordSys.getAxis(coordDim);\n // dataToCoord mapping may not be linear, but must be monotonic.\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n // offset will be calculated later.\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n var colorStopsInRange = clipColorStops(colorStops, coordDim === 'x' ? api.getWidth() : api.getHeight());\n var inRangeStopLen = colorStopsInRange.length;\n if (!inRangeStopLen && stopLen) {\n // All stops are out of range. All will be the same color.\n return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;\n }\n var tinyExtent = 10; // Arbitrary value: 10px\n var minCoord = colorStopsInRange[0].coord - tinyExtent;\n var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n zrUtil.each(colorStopsInRange, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStopsInRange.push({\n // NOTE: inRangeStopLen may still be 0 if stoplen is zero.\n offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStopsInRange.unshift({\n offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n });\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStopsInRange, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n if (showAllSymbol && !isAuto) {\n return;\n }\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n if (!categoryAxis) {\n return;\n }\n // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n if (isAuto\n // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n }\n // Otherwise follow the label interval strategy on category axis.\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n var ordinalNumber = categoryAxis.scale.getRawOrdinalNumber(labelItem.tickValue);\n labelMap[ordinalNumber] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In most cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex\n // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0]\n // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n return true;\n}\nfunction isPointNull(x, y) {\n return isNaN(x) || isNaN(y);\n}\nfunction getLastIndexNotNull(points) {\n var len = points.length / 2;\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n return len - 1;\n}\nfunction getPointAtIndex(points, idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n}\nfunction getIndexRange(points, xOrY, dim) {\n var len = points.length / 2;\n var dimIdx = dim === 'x' ? 0 : 1;\n var a;\n var b;\n var prevIndex = 0;\n var nextIndex = -1;\n for (var i = 0; i < len; i++) {\n b = points[i * 2 + dimIdx];\n if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\n continue;\n }\n if (i === 0) {\n a = b;\n continue;\n }\n if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\n nextIndex = i;\n break;\n }\n prevIndex = i;\n a = b;\n }\n return {\n range: [prevIndex, nextIndex],\n t: (xOrY - a) / (b - a)\n };\n}\nfunction anyStateShowEndLabel(seriesModel) {\n if (seriesModel.get(['endLabel', 'show'])) {\n return true;\n }\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n if (seriesModel.get([SPECIAL_STATES[i], 'endLabel', 'show'])) {\n return true;\n }\n }\n return false;\n}\nfunction createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n var endLabelModel_1 = seriesModel.getModel('endLabel');\n var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\n var data_1 = seriesModel.getData();\n var labelAnimationRecord_1 = {\n lastFrameIndex: 0\n };\n var during = anyStateShowEndLabel(seriesModel) ? function (percent, clipRect) {\n lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\n } : null;\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\n var endLabel = lineView._endLabel;\n if (endLabel && hasAnimation) {\n if (labelAnimationRecord_1.originalX != null) {\n endLabel.attr({\n x: labelAnimationRecord_1.originalX,\n y: labelAnimationRecord_1.originalY\n });\n }\n }\n }, during);\n // Expand clip shape to avoid clipping when line value exceeds axis\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n // Set to the final frame. To make sure label layout is right.\n if (during) {\n during(1, clipPath);\n }\n return clipPath;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (seriesModel.get(['endLabel', 'show'])) {\n console.warn('endLabel is not supported for lines in polar systems.');\n }\n }\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\nfunction getEndLabelStateSpecified(endLabelModel, coordSys) {\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var align = isHorizontal ? isBaseInversed ? 'right' : 'left' : 'center';\n var verticalAlign = isHorizontal ? 'middle' : isBaseInversed ? 'top' : 'bottom';\n return {\n normal: {\n align: endLabelModel.get('align') || align,\n verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign\n }\n };\n}\nvar LineView = /** @class */function (_super) {\n __extends(LineView, _super);\n function LineView() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LineView.prototype.init = function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n };\n LineView.prototype.render = function (seriesModel, ecModel, api) {\n var _this = this;\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.getLayout('points') || [];\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = !ecModel.ssr && seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var connectNulls = seriesModel.get('connectNulls');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys);\n // Remove temporary symbols\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n // Remove previous created symbols if showSymbol changed to false\n if (!showSymbol) {\n symbolDraw.remove();\n }\n group.add(lineGroup);\n // FIXME step not support polar\n var step = !isCoordSysPolar ? seriesModel.get('step') : false;\n var clipShapeForSymbol;\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea();\n // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r += 0.5;\n }\n }\n this._clipShapeForSymbol = clipShapeForSymbol;\n var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual('style')[data.getVisual('drawType')];\n // Initialization animation or coordinate system changed\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol,\n disableAnimation: true,\n getSymbolPoint: function (idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n });\n hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\n }\n polyline = this._newPolyline(points);\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints);\n } // If areaStyle is removed\n else if (polygon) {\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n }\n // NOTE: Must update _endLabel before setClipPath.\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n }\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n }\n // NOTE: Must update _endLabel before setClipPath.\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n }\n // Update clipPath\n var oldClipPath = lineGroup.getClipPath();\n if (oldClipPath) {\n var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);\n graphic.initProps(oldClipPath, {\n shape: newClipPath.shape\n }, seriesModel);\n } else {\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n }\n // Always update, or it is wrong in the case turning on legend\n // because points are not changed.\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol,\n disableAnimation: true,\n getSymbolPoint: function (idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n });\n // In the case data zoom triggered refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing.\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\n }\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n var emphasisModel = seriesModel.getModel('emphasis');\n var focus = emphasisModel.get('focus');\n var blurScope = emphasisModel.get('blurScope');\n var emphasisDisabled = emphasisModel.get('disabled');\n polyline.useStyle(zrUtil.defaults(\n // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\n if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\n var emphasisLineStyle = polyline.getState('emphasis').style;\n emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;\n }\n // Needs seriesIndex for focus\n getECData(polyline).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);\n var smooth = getSmooth(seriesModel.get('smooth'));\n var smoothMonotone = seriesModel.get('smoothMonotone');\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: smoothMonotone,\n connectNulls: connectNulls\n });\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel',\n decal: data.getVisual('style').decal\n }));\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: smoothMonotone,\n connectNulls: connectNulls\n });\n setStatesStylesFromModel(polygon, seriesModel, 'areaStyle');\n // Needs seriesIndex for focus\n getECData(polygon).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);\n }\n var changePolyState = function (toState) {\n _this._changePolyState(toState);\n };\n data.eachItemGraphicEl(function (el) {\n // Switch polyline / polygon state if element changed its state.\n el && (el.onHoverStateChange = changePolyState);\n });\n this._polyline.onHoverStateChange = changePolyState;\n this._data = data;\n // Save the coordinate system for transition animation when data changed\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n if (seriesModel.get('triggerLineEvent')) {\n this.packEventData(seriesModel, polyline);\n polygon && this.packEventData(seriesModel, polygon);\n }\n };\n LineView.prototype.packEventData = function (seriesModel, el) {\n getECData(el).eventData = {\n componentType: 'series',\n componentSubType: 'line',\n componentIndex: seriesModel.componentIndex,\n seriesIndex: seriesModel.seriesIndex,\n seriesName: seriesModel.name,\n seriesType: 'line'\n };\n };\n LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n this._changePolyState('emphasis');\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var points = data.getLayout('points');\n var symbol = data.getItemGraphicEl(dataIndex);\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var x = points[dataIndex * 2];\n var y = points[dataIndex * 2 + 1];\n if (isNaN(x) || isNaN(y)) {\n // Null data\n return;\n }\n // fix #11360: shouldn't draw symbol outside clipShapeForSymbol\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\n return;\n }\n var zlevel = seriesModel.get('zlevel') || 0;\n var z = seriesModel.get('z') || 0;\n symbol = new SymbolClz(data, dataIndex);\n symbol.x = x;\n symbol.y = y;\n symbol.setZ(zlevel, z);\n // ensure label text of the temporary symbol is in front of line and area polygon\n var symbolLabel = symbol.getSymbolPath().getTextContent();\n if (symbolLabel) {\n symbolLabel.zlevel = zlevel;\n symbolLabel.z = z;\n symbolLabel.z2 = this._polyline.z2 + 1;\n }\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol);\n // Stop scale animation\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n };\n LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n this._changePolyState('normal');\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n };\n LineView.prototype._changePolyState = function (toState) {\n var polygon = this._polygon;\n setStatesFlag(this._polyline, toState);\n polygon && setStatesFlag(polygon, toState);\n };\n LineView.prototype._newPolyline = function (points) {\n var polyline = this._polyline;\n // Remove previous created polyline\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n polyline = new ECPolyline({\n shape: {\n points: points\n },\n segmentIgnoreThreshold: 2,\n z2: 10\n });\n this._lineGroup.add(polyline);\n this._polyline = polyline;\n return polyline;\n };\n LineView.prototype._newPolygon = function (points, stackedOnPoints) {\n var polygon = this._polygon;\n // Remove previous created polygon\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n polygon = new ECPolygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n segmentIgnoreThreshold: 2\n });\n this._lineGroup.add(polygon);\n this._polygon = polygon;\n return polygon;\n };\n LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\n var isHorizontalOrRadial;\n var isCoordSysPolar;\n var baseAxis = coordSys.getBaseAxis();\n var isAxisInverse = baseAxis.inverse;\n if (coordSys.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n isCoordSysPolar = false;\n } else if (coordSys.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n isCoordSysPolar = true;\n }\n var seriesModel = data.hostModel;\n var seriesDuration = seriesModel.get('animationDuration');\n if (zrUtil.isFunction(seriesDuration)) {\n seriesDuration = seriesDuration(null);\n }\n var seriesDelay = seriesModel.get('animationDelay') || 0;\n var seriesDelayValue = zrUtil.isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay;\n data.eachItemGraphicEl(function (symbol, idx) {\n var el = symbol;\n if (el) {\n var point = [symbol.x, symbol.y];\n var start = void 0;\n var end = void 0;\n var current = void 0;\n if (clipShape) {\n if (isCoordSysPolar) {\n var polarClip = clipShape;\n var coord = coordSys.pointToCoord(point);\n if (isHorizontalOrRadial) {\n start = polarClip.startAngle;\n end = polarClip.endAngle;\n current = -coord[1] / 180 * Math.PI;\n } else {\n start = polarClip.r0;\n end = polarClip.r;\n current = coord[0];\n }\n } else {\n var gridClip = clipShape;\n if (isHorizontalOrRadial) {\n start = gridClip.x;\n end = gridClip.x + gridClip.width;\n current = symbol.x;\n } else {\n start = gridClip.y + gridClip.height;\n end = gridClip.y;\n current = symbol.y;\n }\n }\n }\n var ratio = end === start ? 0 : (current - start) / (end - start);\n if (isAxisInverse) {\n ratio = 1 - ratio;\n }\n var delay = zrUtil.isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue;\n var symbolPath = el.getSymbolPath();\n var text = symbolPath.getTextContent();\n el.attr({\n scaleX: 0,\n scaleY: 0\n });\n el.animateTo({\n scaleX: 1,\n scaleY: 1\n }, {\n duration: 200,\n setToFinal: true,\n delay: delay\n });\n if (text) {\n text.animateFrom({\n style: {\n opacity: 0\n }\n }, {\n duration: 300,\n delay: delay\n });\n }\n symbolPath.disableLabelAnimation = true;\n }\n });\n };\n LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys, inheritColor) {\n var endLabelModel = seriesModel.getModel('endLabel');\n if (anyStateShowEndLabel(seriesModel)) {\n var data_2 = seriesModel.getData();\n var polyline = this._polyline;\n // series may be filtered.\n var points = data_2.getLayout('points');\n if (!points) {\n polyline.removeTextContent();\n this._endLabel = null;\n return;\n }\n var endLabel = this._endLabel;\n if (!endLabel) {\n endLabel = this._endLabel = new graphic.Text({\n z2: 200 // should be higher than item symbol\n });\n\n endLabel.ignoreClip = true;\n polyline.setTextContent(this._endLabel);\n polyline.disableLabelAnimation = true;\n }\n // Find last non-NaN data to display data\n var dataIndex = getLastIndexNotNull(points);\n if (dataIndex >= 0) {\n setLabelStyle(polyline, getLabelStatesModels(seriesModel, 'endLabel'), {\n inheritColor: inheritColor,\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: function (dataIndex, opt, interpolatedValue) {\n return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex);\n },\n enableTextSetter: true\n }, getEndLabelStateSpecified(endLabelModel, coordSys));\n polyline.textConfig.position = null;\n }\n } else if (this._endLabel) {\n this._polyline.removeTextContent();\n this._endLabel = null;\n }\n };\n LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\n var endLabel = this._endLabel;\n var polyline = this._polyline;\n if (endLabel) {\n // NOTE: Don't remove percent < 1. percent === 1 means the first frame during render.\n // The label is not prepared at this time.\n if (percent < 1 && animationRecord.originalX == null) {\n animationRecord.originalX = endLabel.x;\n animationRecord.originalY = endLabel.y;\n }\n var points = data.getLayout('points');\n var seriesModel = data.hostModel;\n var connectNulls = seriesModel.get('connectNulls');\n var precision = endLabelModel.get('precision');\n var distance = endLabelModel.get('distance') || 0;\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var clipShape = clipRect.shape;\n var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;\n var distanceX = (isHorizontal ? distance : 0) * (isBaseInversed ? -1 : 1);\n var distanceY = (isHorizontal ? 0 : -distance) * (isBaseInversed ? -1 : 1);\n var dim = isHorizontal ? 'x' : 'y';\n var dataIndexRange = getIndexRange(points, xOrY, dim);\n var indices = dataIndexRange.range;\n var diff = indices[1] - indices[0];\n var value = void 0;\n if (diff >= 1) {\n // diff > 1 && connectNulls, which is on the null data.\n if (diff > 1 && !connectNulls) {\n var pt = getPointAtIndex(points, indices[0]);\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n valueAnimation && (value = seriesModel.getRawValue(indices[0]));\n } else {\n var pt = polyline.getPointOn(xOrY, dim);\n pt && endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n var startValue = seriesModel.getRawValue(indices[0]);\n var endValue = seriesModel.getRawValue(indices[1]);\n valueAnimation && (value = modelUtil.interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\n }\n animationRecord.lastFrameIndex = indices[0];\n } else {\n // If diff <= 0, which is the range is not found(Include NaN)\n // Choose the first point or last point.\n var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;\n var pt = getPointAtIndex(points, idx);\n valueAnimation && (value = seriesModel.getRawValue(idx));\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n }\n if (valueAnimation) {\n var inner = labelInner(endLabel);\n if (typeof inner.setLabelText === 'function') {\n inner.setLabelText(value);\n }\n }\n }\n };\n /**\n * @private\n */\n // FIXME Two value axis\n LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step, connectNulls);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls);\n next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls);\n }\n // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.stopAnimation();\n polyline.setShape({\n points: next\n });\n if (polygon) {\n polygon.stopAnimation();\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n return;\n }\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n var target = {\n shape: {\n points: next\n }\n };\n // Also animate the original points.\n // If points reference is changed when turning into step line.\n if (diff.current !== current) {\n target.shape.__points = diff.next;\n }\n // Stop previous animation.\n polyline.stopAnimation();\n graphic.updateProps(polyline, target, seriesModel);\n if (polygon) {\n polygon.setShape({\n // Reuse the points with polyline.\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n polygon.stopAnimation();\n graphic.updateProps(polygon, {\n shape: {\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n // If use attr directly in updateProps.\n if (polyline.shape.points !== polygon.shape.points) {\n polygon.shape.points = polyline.shape.points;\n }\n }\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n polygon && polygon.dirtyShape();\n var points = polyline.shape.__points;\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n var offset = updatedDataInfo[i].ptIdx * 2;\n el.x = points[offset];\n el.y = points[offset + 1];\n el.markRedraw();\n }\n });\n }\n };\n LineView.prototype.remove = function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n this._lineGroup.removeAll();\n this._symbolDraw.remove(true);\n // Remove temporary created elements when highlighting\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null;\n };\n LineView.type = 'line';\n return LineView;\n}(ChartView);\nexport default LineView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { map } from 'zrender/lib/core/util.js';\nimport createRenderPlanner from '../chart/helper/createRenderPlanner.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\nimport { createFloat32Array } from '../util/vendor.js';\nexport default function pointsLayout(seriesType, forceStoreInTypedArray) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\n if (!coordSys) {\n return;\n }\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n if (isDimensionStacked(data, dims[0])) {\n dims[0] = stackResultDim;\n }\n if (isDimensionStacked(data, dims[1])) {\n dims[1] = stackResultDim;\n }\n var store = data.getStore();\n var dimIdx0 = data.getDimensionIndex(dims[0]);\n var dimIdx1 = data.getDimensionIndex(dims[1]);\n return dimLen && {\n progress: function (params, data) {\n var segCount = params.end - params.start;\n var points = useTypedArray && createFloat32Array(segCount * dimLen);\n var tmpIn = [];\n var tmpOut = [];\n for (var i = params.start, offset = 0; i < params.end; i++) {\n var point = void 0;\n if (dimLen === 1) {\n var x = store.get(dimIdx0, i);\n // NOTE: Make sure the second parameter is null to use default strategy.\n point = coordSys.dataToPoint(x, null, tmpOut);\n } else {\n tmpIn[0] = store.get(dimIdx0, i);\n tmpIn[1] = store.get(dimIdx1, i);\n // Let coordinate system to handle the NaN data.\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n if (useTypedArray) {\n points[offset++] = point[0];\n points[offset++] = point[1];\n } else {\n data.setItemLayout(i, point.slice());\n }\n }\n useTypedArray && data.setLayout('points', points);\n }\n };\n }\n };\n}\n;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport LineSeries from './LineSeries.js';\nimport LineView from './LineView.js';\n// In case developer forget to include grid component\nimport layoutPoints from '../../layout/points.js';\nimport dataSample from '../../processor/dataSample.js';\nexport function install(registers) {\n registers.registerChartView(LineView);\n registers.registerSeriesModel(LineSeries);\n registers.registerLayout(layoutPoints('line', true));\n registers.registerVisual({\n seriesType: 'line',\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n // Visual coding for legend\n var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n if (lineStyle && !lineStyle.stroke) {\n // Fill in visual should be palette color if\n // has color callback\n lineStyle.stroke = data.getVisual('style').fill;\n }\n data.setVisual('legendLineStyle', lineStyle);\n }\n });\n // Down sample after filter\n registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n}","import { cubicSubdivide } from '../core/curve.js';\nimport PathProxy from '../core/PathProxy.js';\nvar CMD = PathProxy.CMD;\nfunction aroundEqual(a, b) {\n return Math.abs(a - b) < 1e-5;\n}\nexport function pathToBezierCurves(path) {\n var data = path.data;\n var len = path.len();\n var bezierArrayGroups = [];\n var currentSubpath;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n function createNewSubpath(x, y) {\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n currentSubpath = [x, y];\n }\n function addLine(x0, y0, x1, y1) {\n if (!(aroundEqual(x0, x1) && aroundEqual(y0, y1))) {\n currentSubpath.push(x0, y0, x1, y1, x1, y1);\n }\n }\n function addArc(startAngle, endAngle, cx, cy, rx, ry) {\n var delta = Math.abs(endAngle - startAngle);\n var len = Math.tan(delta / 4) * 4 / 3;\n var dir = endAngle < startAngle ? -1 : 1;\n var c1 = Math.cos(startAngle);\n var s1 = Math.sin(startAngle);\n var c2 = Math.cos(endAngle);\n var s2 = Math.sin(endAngle);\n var x1 = c1 * rx + cx;\n var y1 = s1 * ry + cy;\n var x4 = c2 * rx + cx;\n var y4 = s2 * ry + cy;\n var hx = rx * len * dir;\n var hy = ry * len * dir;\n currentSubpath.push(x1 - hx * s1, y1 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);\n }\n var x1;\n var y1;\n var x2;\n var y2;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) {\n currentSubpath = [x0, y0];\n }\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n createNewSubpath(x0, y0);\n break;\n case CMD.L:\n x1 = data[i++];\n y1 = data[i++];\n addLine(xi, yi, x1, y1);\n xi = x1;\n yi = y1;\n break;\n case CMD.C:\n currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);\n break;\n case CMD.Q:\n x1 = data[i++];\n y1 = data[i++];\n x2 = data[i++];\n y2 = data[i++];\n currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);\n xi = x2;\n yi = y2;\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n x1 = Math.cos(startAngle) * rx + cx;\n y1 = Math.sin(startAngle) * ry + cy;\n if (isFirst) {\n x0 = x1;\n y0 = y1;\n createNewSubpath(x0, y0);\n }\n else {\n addLine(xi, yi, x1, y1);\n }\n xi = Math.cos(endAngle) * rx + cx;\n yi = Math.sin(endAngle) * ry + cy;\n var step = (anticlockwise ? -1 : 1) * Math.PI / 2;\n for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\n var nextAngle = anticlockwise ? Math.max(angle + step, endAngle)\n : Math.min(angle + step, endAngle);\n addArc(angle, nextAngle, cx, cy, rx, ry);\n }\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n x1 = x0 + data[i++];\n y1 = y0 + data[i++];\n createNewSubpath(x1, y0);\n addLine(x1, y0, x1, y1);\n addLine(x1, y1, x0, y1);\n addLine(x0, y1, x0, y0);\n addLine(x0, y0, x1, y0);\n break;\n case CMD.Z:\n currentSubpath && addLine(xi, yi, x0, y0);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n return bezierArrayGroups;\n}\nfunction adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out, scale) {\n if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) {\n out.push(x3, y3);\n return;\n }\n var PIXEL_DISTANCE = 2 / scale;\n var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE;\n var dx = x3 - x0;\n var dy = y3 - y0;\n var d = Math.sqrt(dx * dx + dy * dy);\n dx /= d;\n dy /= d;\n var dx1 = x1 - x0;\n var dy1 = y1 - y0;\n var dx2 = x2 - x3;\n var dy2 = y2 - y3;\n var cp1LenSqr = dx1 * dx1 + dy1 * dy1;\n var cp2LenSqr = dx2 * dx2 + dy2 * dy2;\n if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {\n out.push(x3, y3);\n return;\n }\n var projLen1 = dx * dx1 + dy * dy1;\n var projLen2 = -dx * dx2 - dy * dy2;\n var d1Sqr = cp1LenSqr - projLen1 * projLen1;\n var d2Sqr = cp2LenSqr - projLen2 * projLen2;\n if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0\n && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) {\n out.push(x3, y3);\n return;\n }\n var tmpSegX = [];\n var tmpSegY = [];\n cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY);\n adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out, scale);\n adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out, scale);\n}\nexport function pathToPolygons(path, scale) {\n var bezierArrayGroups = pathToBezierCurves(path);\n var polygons = [];\n scale = scale || 1;\n for (var i = 0; i < bezierArrayGroups.length; i++) {\n var beziers = bezierArrayGroups[i];\n var polygon = [];\n var x0 = beziers[0];\n var y0 = beziers[1];\n polygon.push(x0, y0);\n for (var k = 2; k < beziers.length;) {\n var x1 = beziers[k++];\n var y1 = beziers[k++];\n var x2 = beziers[k++];\n var y2 = beziers[k++];\n var x3 = beziers[k++];\n var y3 = beziers[k++];\n adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale);\n x0 = x3;\n y0 = y3;\n }\n polygons.push(polygon);\n }\n return polygons;\n}\n","import { fromPoints } from '../core/bbox.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Point from '../core/Point.js';\nimport { map } from '../core/util.js';\nimport Polygon from '../graphic/shape/Polygon.js';\nimport Rect from '../graphic/shape/Rect.js';\nimport Sector from '../graphic/shape/Sector.js';\nimport { pathToPolygons } from './convertPath.js';\nimport { clonePath } from './path.js';\nfunction getDividingGrids(dimSize, rowDim, count) {\n var rowSize = dimSize[rowDim];\n var columnSize = dimSize[1 - rowDim];\n var ratio = Math.abs(rowSize / columnSize);\n var rowCount = Math.ceil(Math.sqrt(ratio * count));\n var columnCount = Math.floor(count / rowCount);\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n var grids = [];\n for (var i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n var currentCount = rowCount * columnCount;\n var remained = count - currentCount;\n if (remained > 0) {\n for (var i = 0; i < remained; i++) {\n grids[i % rowCount] += 1;\n }\n }\n return grids;\n}\nfunction divideSector(sectorShape, count, outShapes) {\n var r0 = sectorShape.r0;\n var r = sectorShape.r;\n var startAngle = sectorShape.startAngle;\n var endAngle = sectorShape.endAngle;\n var angle = Math.abs(endAngle - startAngle);\n var arcLen = angle * r;\n var deltaR = r - r0;\n var isAngleRow = arcLen > Math.abs(deltaR);\n var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count);\n var rowSize = (isAngleRow ? angle : deltaR) / grids.length;\n for (var row = 0; row < grids.length; row++) {\n var columnSize = (isAngleRow ? deltaR : angle) / grids[row];\n for (var column = 0; column < grids[row]; column++) {\n var newShape = {};\n if (isAngleRow) {\n newShape.startAngle = startAngle + rowSize * row;\n newShape.endAngle = startAngle + rowSize * (row + 1);\n newShape.r0 = r0 + columnSize * column;\n newShape.r = r0 + columnSize * (column + 1);\n }\n else {\n newShape.startAngle = startAngle + columnSize * column;\n newShape.endAngle = startAngle + columnSize * (column + 1);\n newShape.r0 = r0 + rowSize * row;\n newShape.r = r0 + rowSize * (row + 1);\n }\n newShape.clockwise = sectorShape.clockwise;\n newShape.cx = sectorShape.cx;\n newShape.cy = sectorShape.cy;\n outShapes.push(newShape);\n }\n }\n}\nfunction divideRect(rectShape, count, outShapes) {\n var width = rectShape.width;\n var height = rectShape.height;\n var isHorizontalRow = width > height;\n var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count);\n var rowSizeDim = isHorizontalRow ? 'width' : 'height';\n var columnSizeDim = isHorizontalRow ? 'height' : 'width';\n var rowDim = isHorizontalRow ? 'x' : 'y';\n var columnDim = isHorizontalRow ? 'y' : 'x';\n var rowSize = rectShape[rowSizeDim] / grids.length;\n for (var row = 0; row < grids.length; row++) {\n var columnSize = rectShape[columnSizeDim] / grids[row];\n for (var column = 0; column < grids[row]; column++) {\n var newShape = {};\n newShape[rowDim] = row * rowSize;\n newShape[columnDim] = column * columnSize;\n newShape[rowSizeDim] = rowSize;\n newShape[columnSizeDim] = columnSize;\n newShape.x += rectShape.x;\n newShape.y += rectShape.y;\n outShapes.push(newShape);\n }\n }\n}\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y;\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n if (Math.abs(nmCrossProduct) < 1e-6) {\n return null;\n }\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n if (p < 0 || p > 1) {\n return null;\n }\n return new Point(p * mx + a1x, p * my + a1y);\n}\nfunction projPtOnLine(pt, lineA, lineB) {\n var dir = new Point();\n Point.sub(dir, lineB, lineA);\n dir.normalize();\n var dir2 = new Point();\n Point.sub(dir2, pt, lineA);\n var len = dir2.dot(dir);\n return len;\n}\nfunction addToPoly(poly, pt) {\n var last = poly[poly.length - 1];\n if (last && last[0] === pt[0] && last[1] === pt[1]) {\n return;\n }\n poly.push(pt);\n}\nfunction splitPolygonByLine(points, lineA, lineB) {\n var len = points.length;\n var intersections = [];\n for (var i = 0; i < len; i++) {\n var p0 = points[i];\n var p1 = points[(i + 1) % len];\n var intersectionPt = lineLineIntersect(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y);\n if (intersectionPt) {\n intersections.push({\n projPt: projPtOnLine(intersectionPt, lineA, lineB),\n pt: intersectionPt,\n idx: i\n });\n }\n }\n if (intersections.length < 2) {\n return [{ points: points }, { points: points }];\n }\n intersections.sort(function (a, b) {\n return a.projPt - b.projPt;\n });\n var splitPt0 = intersections[0];\n var splitPt1 = intersections[intersections.length - 1];\n if (splitPt1.idx < splitPt0.idx) {\n var tmp = splitPt0;\n splitPt0 = splitPt1;\n splitPt1 = tmp;\n }\n var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y];\n var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y];\n var newPolyA = [splitPt0Arr];\n var newPolyB = [splitPt1Arr];\n for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) {\n addToPoly(newPolyA, points[i].slice());\n }\n addToPoly(newPolyA, splitPt1Arr);\n addToPoly(newPolyA, splitPt0Arr);\n for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len; i++) {\n addToPoly(newPolyB, points[i % len].slice());\n }\n addToPoly(newPolyB, splitPt0Arr);\n addToPoly(newPolyB, splitPt1Arr);\n return [{\n points: newPolyA\n }, {\n points: newPolyB\n }];\n}\nfunction binaryDividePolygon(polygonShape) {\n var points = polygonShape.points;\n var min = [];\n var max = [];\n fromPoints(points, min, max);\n var boundingRect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n var width = boundingRect.width;\n var height = boundingRect.height;\n var x = boundingRect.x;\n var y = boundingRect.y;\n var pt0 = new Point();\n var pt1 = new Point();\n if (width > height) {\n pt0.x = pt1.x = x + width / 2;\n pt0.y = y;\n pt1.y = y + height;\n }\n else {\n pt0.y = pt1.y = y + height / 2;\n pt0.x = x;\n pt1.x = x + width;\n }\n return splitPolygonByLine(points, pt0, pt1);\n}\nfunction binaryDivideRecursive(divider, shape, count, out) {\n if (count === 1) {\n out.push(shape);\n }\n else {\n var mid = Math.floor(count / 2);\n var sub = divider(shape);\n binaryDivideRecursive(divider, sub[0], mid, out);\n binaryDivideRecursive(divider, sub[1], count - mid, out);\n }\n return out;\n}\nexport function clone(path, count) {\n var paths = [];\n for (var i = 0; i < count; i++) {\n paths.push(clonePath(path));\n }\n return paths;\n}\nfunction copyPathProps(source, target) {\n target.setStyle(source.style);\n target.z = source.z;\n target.z2 = source.z2;\n target.zlevel = source.zlevel;\n}\nfunction polygonConvert(points) {\n var out = [];\n for (var i = 0; i < points.length;) {\n out.push([points[i++], points[i++]]);\n }\n return out;\n}\nexport function split(path, count) {\n var outShapes = [];\n var shape = path.shape;\n var OutShapeCtor;\n switch (path.type) {\n case 'rect':\n divideRect(shape, count, outShapes);\n OutShapeCtor = Rect;\n break;\n case 'sector':\n divideSector(shape, count, outShapes);\n OutShapeCtor = Sector;\n break;\n case 'circle':\n divideSector({\n r0: 0, r: shape.r, startAngle: 0, endAngle: Math.PI * 2,\n cx: shape.cx, cy: shape.cy\n }, count, outShapes);\n OutShapeCtor = Sector;\n break;\n default:\n var m = path.getComputedTransform();\n var scale = m ? Math.sqrt(Math.max(m[0] * m[0] + m[1] * m[1], m[2] * m[2] + m[3] * m[3])) : 1;\n var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale), function (poly) { return polygonConvert(poly); });\n var polygonCount = polygons.length;\n if (polygonCount === 0) {\n binaryDivideRecursive(binaryDividePolygon, {\n points: polygons[0]\n }, count, outShapes);\n }\n else if (polygonCount === count) {\n for (var i = 0; i < polygonCount; i++) {\n outShapes.push({\n points: polygons[i]\n });\n }\n }\n else {\n var totalArea_1 = 0;\n var items = map(polygons, function (poly) {\n var min = [];\n var max = [];\n fromPoints(poly, min, max);\n var area = (max[1] - min[1]) * (max[0] - min[0]);\n totalArea_1 += area;\n return { poly: poly, area: area };\n });\n items.sort(function (a, b) { return b.area - a.area; });\n var left = count;\n for (var i = 0; i < polygonCount; i++) {\n var item = items[i];\n if (left <= 0) {\n break;\n }\n var selfCount = i === polygonCount - 1\n ? left\n : Math.ceil(item.area / totalArea_1 * count);\n if (selfCount < 0) {\n continue;\n }\n binaryDivideRecursive(binaryDividePolygon, {\n points: item.poly\n }, selfCount, outShapes);\n left -= selfCount;\n }\n ;\n }\n OutShapeCtor = Polygon;\n break;\n }\n if (!OutShapeCtor) {\n return clone(path, count);\n }\n var out = [];\n for (var i = 0; i < outShapes.length; i++) {\n var subPath = new OutShapeCtor();\n subPath.setShape(outShapes[i]);\n copyPathProps(path, subPath);\n out.push(subPath);\n }\n return out;\n}\n","import { cubicSubdivide } from '../core/curve.js';\nimport Path from '../graphic/Path.js';\nimport { defaults, map } from '../core/util.js';\nimport { lerp } from '../core/vector.js';\nimport { clonePath } from './path.js';\nimport Transformable from '../core/Transformable.js';\nimport { split } from './dividePath.js';\nimport { pathToBezierCurves } from './convertPath.js';\nfunction alignSubpath(subpath1, subpath2) {\n var len1 = subpath1.length;\n var len2 = subpath2.length;\n if (len1 === len2) {\n return [subpath1, subpath2];\n }\n var tmpSegX = [];\n var tmpSegY = [];\n var shorterPath = len1 < len2 ? subpath1 : subpath2;\n var shorterLen = Math.min(len1, len2);\n var diff = Math.abs(len2 - len1) / 6;\n var shorterBezierCount = (shorterLen - 2) / 6;\n var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;\n var newSubpath = [shorterPath[0], shorterPath[1]];\n var remained = diff;\n for (var i = 2; i < shorterLen;) {\n var x0 = shorterPath[i - 2];\n var y0 = shorterPath[i - 1];\n var x1 = shorterPath[i++];\n var y1 = shorterPath[i++];\n var x2 = shorterPath[i++];\n var y2 = shorterPath[i++];\n var x3 = shorterPath[i++];\n var y3 = shorterPath[i++];\n if (remained <= 0) {\n newSubpath.push(x1, y1, x2, y2, x3, y3);\n continue;\n }\n var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;\n for (var k = 1; k <= actualSubDivCount; k++) {\n var p = k / actualSubDivCount;\n cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\n x0 = tmpSegX[3];\n y0 = tmpSegY[3];\n newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\n x1 = tmpSegX[5];\n y1 = tmpSegY[5];\n x2 = tmpSegX[6];\n y2 = tmpSegY[6];\n }\n remained -= actualSubDivCount - 1;\n }\n return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\n}\nfunction createSubpath(lastSubpathSubpath, otherSubpath) {\n var len = lastSubpathSubpath.length;\n var lastX = lastSubpathSubpath[len - 2];\n var lastY = lastSubpathSubpath[len - 1];\n var newSubpath = [];\n for (var i = 0; i < otherSubpath.length;) {\n newSubpath[i++] = lastX;\n newSubpath[i++] = lastY;\n }\n return newSubpath;\n}\nexport function alignBezierCurves(array1, array2) {\n var _a;\n var lastSubpath1;\n var lastSubpath2;\n var newArray1 = [];\n var newArray2 = [];\n for (var i = 0; i < Math.max(array1.length, array2.length); i++) {\n var subpath1 = array1[i];\n var subpath2 = array2[i];\n var newSubpath1 = void 0;\n var newSubpath2 = void 0;\n if (!subpath1) {\n newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);\n newSubpath2 = subpath2;\n }\n else if (!subpath2) {\n newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);\n newSubpath1 = subpath1;\n }\n else {\n _a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1];\n lastSubpath1 = newSubpath1;\n lastSubpath2 = newSubpath2;\n }\n newArray1.push(newSubpath1);\n newArray2.push(newSubpath2);\n }\n return [newArray1, newArray2];\n}\nexport function centroid(array) {\n var signedArea = 0;\n var cx = 0;\n var cy = 0;\n var len = array.length;\n for (var i = 0, j = len - 2; i < len; j = i, i += 2) {\n var x0 = array[j];\n var y0 = array[j + 1];\n var x1 = array[i];\n var y1 = array[i + 1];\n var a = x0 * y1 - x1 * y0;\n signedArea += a;\n cx += (x0 + x1) * a;\n cy += (y0 + y1) * a;\n }\n if (signedArea === 0) {\n return [array[0] || 0, array[1] || 0];\n }\n return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\n}\nfunction findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {\n var bezierCount = (fromSubBeziers.length - 2) / 6;\n var bestScore = Infinity;\n var bestOffset = 0;\n var len = fromSubBeziers.length;\n var len2 = len - 2;\n for (var offset = 0; offset < bezierCount; offset++) {\n var cursorOffset = offset * 6;\n var score = 0;\n for (var k = 0; k < len; k += 2) {\n var idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2 + 2);\n var x0 = fromSubBeziers[idx] - fromCp[0];\n var y0 = fromSubBeziers[idx + 1] - fromCp[1];\n var x1 = toSubBeziers[k] - toCp[0];\n var y1 = toSubBeziers[k + 1] - toCp[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestOffset = offset;\n }\n }\n return bestOffset;\n}\nfunction reverse(array) {\n var newArr = [];\n var len = array.length;\n for (var i = 0; i < len; i += 2) {\n newArr[i] = array[len - i - 2];\n newArr[i + 1] = array[len - i - 1];\n }\n return newArr;\n}\nfunction findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) {\n var result = [];\n var fromNeedsReverse;\n for (var i = 0; i < fromArr.length; i++) {\n var fromSubpathBezier = fromArr[i];\n var toSubpathBezier = toArr[i];\n var fromCp = centroid(fromSubpathBezier);\n var toCp = centroid(toSubpathBezier);\n if (fromNeedsReverse == null) {\n fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\n }\n var newFromSubpathBezier = [];\n var newToSubpathBezier = [];\n var bestAngle = 0;\n var bestScore = Infinity;\n var tmpArr = [];\n var len = fromSubpathBezier.length;\n if (fromNeedsReverse) {\n fromSubpathBezier = reverse(fromSubpathBezier);\n }\n var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\n var len2 = len - 2;\n for (var k = 0; k < len2; k += 2) {\n var idx = (offset + k) % len2 + 2;\n newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\n newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\n }\n newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\n newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\n if (searchAngleIteration > 0) {\n var step = searchAngleRange / searchAngleIteration;\n for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\n var sa = Math.sin(angle);\n var ca = Math.cos(angle);\n var score = 0;\n for (var k = 0; k < fromSubpathBezier.length; k += 2) {\n var x0 = newFromSubpathBezier[k];\n var y0 = newFromSubpathBezier[k + 1];\n var x1 = toSubpathBezier[k] - toCp[0];\n var y1 = toSubpathBezier[k + 1] - toCp[1];\n var newX1 = x1 * ca - y1 * sa;\n var newY1 = x1 * sa + y1 * ca;\n tmpArr[k] = newX1;\n tmpArr[k + 1] = newY1;\n var dx = newX1 - x0;\n var dy = newY1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestAngle = angle;\n for (var m = 0; m < tmpArr.length; m++) {\n newToSubpathBezier[m] = tmpArr[m];\n }\n }\n }\n }\n else {\n for (var i_1 = 0; i_1 < len; i_1 += 2) {\n newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];\n newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];\n }\n }\n result.push({\n from: newFromSubpathBezier,\n to: newToSubpathBezier,\n fromCp: fromCp,\n toCp: toCp,\n rotation: -bestAngle\n });\n }\n return result;\n}\nexport function isCombineMorphing(path) {\n return path.__isCombineMorphing;\n}\nexport function isMorphing(el) {\n return el.__morphT >= 0;\n}\nvar SAVED_METHOD_PREFIX = '__mOriginal_';\nfunction saveAndModifyMethod(obj, methodName, modifiers) {\n var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n var originalMethod = obj[savedMethodName] || obj[methodName];\n if (!obj[savedMethodName]) {\n obj[savedMethodName] = obj[methodName];\n }\n var replace = modifiers.replace;\n var after = modifiers.after;\n var before = modifiers.before;\n obj[methodName] = function () {\n var args = arguments;\n var res;\n before && before.apply(this, args);\n if (replace) {\n res = replace.apply(this, args);\n }\n else {\n res = originalMethod.apply(this, args);\n }\n after && after.apply(this, args);\n return res;\n };\n}\nfunction restoreMethod(obj, methodName) {\n var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n if (obj[savedMethodName]) {\n obj[methodName] = obj[savedMethodName];\n obj[savedMethodName] = null;\n }\n}\nfunction applyTransformOnBeziers(bezierCurves, mm) {\n for (var i = 0; i < bezierCurves.length; i++) {\n var subBeziers = bezierCurves[i];\n for (var k = 0; k < subBeziers.length;) {\n var x = subBeziers[k];\n var y = subBeziers[k + 1];\n subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4];\n subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5];\n }\n }\n}\nfunction prepareMorphPath(fromPath, toPath) {\n var fromPathProxy = fromPath.getUpdatedPathProxy();\n var toPathProxy = toPath.getUpdatedPathProxy();\n var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1];\n var fromPathTransform = fromPath.getComputedTransform();\n var toPathTransform = toPath.getComputedTransform();\n function updateIdentityTransform() {\n this.transform = null;\n }\n fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform);\n toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform);\n saveAndModifyMethod(toPath, 'updateTransform', { replace: updateIdentityTransform });\n toPath.transform = null;\n var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);\n var tmpArr = [];\n saveAndModifyMethod(toPath, 'buildPath', { replace: function (path) {\n var t = toPath.__morphT;\n var onet = 1 - t;\n var newCp = [];\n for (var i = 0; i < morphingData.length; i++) {\n var item = morphingData[i];\n var from = item.from;\n var to = item.to;\n var angle = item.rotation * t;\n var fromCp = item.fromCp;\n var toCp = item.toCp;\n var sa = Math.sin(angle);\n var ca = Math.cos(angle);\n lerp(newCp, fromCp, toCp, t);\n for (var m = 0; m < from.length; m += 2) {\n var x0_1 = from[m];\n var y0_1 = from[m + 1];\n var x1 = to[m];\n var y1 = to[m + 1];\n var x = x0_1 * onet + x1 * t;\n var y = y0_1 * onet + y1 * t;\n tmpArr[m] = (x * ca - y * sa) + newCp[0];\n tmpArr[m + 1] = (x * sa + y * ca) + newCp[1];\n }\n var x0 = tmpArr[0];\n var y0 = tmpArr[1];\n path.moveTo(x0, y0);\n for (var m = 2; m < from.length;) {\n var x1 = tmpArr[m++];\n var y1 = tmpArr[m++];\n var x2 = tmpArr[m++];\n var y2 = tmpArr[m++];\n var x3 = tmpArr[m++];\n var y3 = tmpArr[m++];\n if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) {\n path.lineTo(x3, y3);\n }\n else {\n path.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n x0 = x3;\n y0 = y3;\n }\n }\n } });\n}\nexport function morphPath(fromPath, toPath, animationOpts) {\n if (!fromPath || !toPath) {\n return toPath;\n }\n var oldDone = animationOpts.done;\n var oldDuring = animationOpts.during;\n prepareMorphPath(fromPath, toPath);\n toPath.__morphT = 0;\n function restoreToPath() {\n restoreMethod(toPath, 'buildPath');\n restoreMethod(toPath, 'updateTransform');\n toPath.__morphT = -1;\n toPath.createPathProxy();\n toPath.dirtyShape();\n }\n toPath.animateTo({\n __morphT: 1\n }, defaults({\n during: function (p) {\n toPath.dirtyShape();\n oldDuring && oldDuring(p);\n },\n done: function () {\n restoreToPath();\n oldDone && oldDone();\n }\n }, animationOpts));\n return toPath;\n}\nfunction hilbert(x, y, minX, minY, maxX, maxY) {\n var bits = 16;\n x = (maxX === minX) ? 0 : Math.round(32767 * (x - minX) / (maxX - minX));\n y = (maxY === minY) ? 0 : Math.round(32767 * (y - minY) / (maxY - minY));\n var d = 0;\n var tmp;\n for (var s = (1 << bits) / 2; s > 0; s /= 2) {\n var rx = 0;\n var ry = 0;\n if ((x & s) > 0) {\n rx = 1;\n }\n if ((y & s) > 0) {\n ry = 1;\n }\n d += s * s * ((3 * rx) ^ ry);\n if (ry === 0) {\n if (rx === 1) {\n x = s - 1 - x;\n y = s - 1 - y;\n }\n tmp = x;\n x = y;\n y = tmp;\n }\n }\n return d;\n}\nfunction sortPaths(pathList) {\n var xMin = Infinity;\n var yMin = Infinity;\n var xMax = -Infinity;\n var yMax = -Infinity;\n var cps = map(pathList, function (path) {\n var rect = path.getBoundingRect();\n var m = path.getComputedTransform();\n var x = rect.x + rect.width / 2 + (m ? m[4] : 0);\n var y = rect.y + rect.height / 2 + (m ? m[5] : 0);\n xMin = Math.min(x, xMin);\n yMin = Math.min(y, yMin);\n xMax = Math.max(x, xMax);\n yMax = Math.max(y, yMax);\n return [x, y];\n });\n var items = map(cps, function (cp, idx) {\n return {\n cp: cp,\n z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),\n path: pathList[idx]\n };\n });\n return items.sort(function (a, b) { return a.z - b.z; }).map(function (item) { return item.path; });\n}\n;\nfunction defaultDividePath(param) {\n return split(param.path, param.count);\n}\nfunction createEmptyReturn() {\n return {\n fromIndividuals: [],\n toIndividuals: [],\n count: 0\n };\n}\nexport function combineMorph(fromList, toPath, animationOpts) {\n var fromPathList = [];\n function addFromPath(fromList) {\n for (var i = 0; i < fromList.length; i++) {\n var from = fromList[i];\n if (isCombineMorphing(from)) {\n addFromPath(from.childrenRef());\n }\n else if (from instanceof Path) {\n fromPathList.push(from);\n }\n }\n }\n addFromPath(fromList);\n var separateCount = fromPathList.length;\n if (!separateCount) {\n return createEmptyReturn();\n }\n var dividePath = animationOpts.dividePath || defaultDividePath;\n var toSubPathList = dividePath({\n path: toPath, count: separateCount\n });\n if (toSubPathList.length !== separateCount) {\n console.error('Invalid morphing: unmatched splitted path');\n return createEmptyReturn();\n }\n fromPathList = sortPaths(fromPathList);\n toSubPathList = sortPaths(toSubPathList);\n var oldDone = animationOpts.done;\n var oldDuring = animationOpts.during;\n var individualDelay = animationOpts.individualDelay;\n var identityTransform = new Transformable();\n for (var i = 0; i < separateCount; i++) {\n var from = fromPathList[i];\n var to = toSubPathList[i];\n to.parent = toPath;\n to.copyTransform(identityTransform);\n if (!individualDelay) {\n prepareMorphPath(from, to);\n }\n }\n toPath.__isCombineMorphing = true;\n toPath.childrenRef = function () {\n return toSubPathList;\n };\n function addToSubPathListToZr(zr) {\n for (var i = 0; i < toSubPathList.length; i++) {\n toSubPathList[i].addSelfToZr(zr);\n }\n }\n saveAndModifyMethod(toPath, 'addSelfToZr', {\n after: function (zr) {\n addToSubPathListToZr(zr);\n }\n });\n saveAndModifyMethod(toPath, 'removeSelfFromZr', {\n after: function (zr) {\n for (var i = 0; i < toSubPathList.length; i++) {\n toSubPathList[i].removeSelfFromZr(zr);\n }\n }\n });\n function restoreToPath() {\n toPath.__isCombineMorphing = false;\n toPath.__morphT = -1;\n toPath.childrenRef = null;\n restoreMethod(toPath, 'addSelfToZr');\n restoreMethod(toPath, 'removeSelfFromZr');\n }\n var toLen = toSubPathList.length;\n if (individualDelay) {\n var animating_1 = toLen;\n var eachDone = function () {\n animating_1--;\n if (animating_1 === 0) {\n restoreToPath();\n oldDone && oldDone();\n }\n };\n for (var i = 0; i < toLen; i++) {\n var indivdualAnimationOpts = individualDelay ? defaults({\n delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]),\n done: eachDone\n }, animationOpts) : animationOpts;\n morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts);\n }\n }\n else {\n toPath.__morphT = 0;\n toPath.animateTo({\n __morphT: 1\n }, defaults({\n during: function (p) {\n for (var i = 0; i < toLen; i++) {\n var child = toSubPathList[i];\n child.__morphT = toPath.__morphT;\n child.dirtyShape();\n }\n oldDuring && oldDuring(p);\n },\n done: function () {\n restoreToPath();\n for (var i = 0; i < fromList.length; i++) {\n restoreMethod(fromList[i], 'updateTransform');\n }\n oldDone && oldDone();\n }\n }, animationOpts));\n }\n if (toPath.__zr) {\n addToSubPathListToZr(toPath.__zr);\n }\n return {\n fromIndividuals: fromPathList,\n toIndividuals: toSubPathList,\n count: toLen\n };\n}\nexport function separateMorph(fromPath, toPathList, animationOpts) {\n var toLen = toPathList.length;\n var fromPathList = [];\n var dividePath = animationOpts.dividePath || defaultDividePath;\n function addFromPath(fromList) {\n for (var i = 0; i < fromList.length; i++) {\n var from = fromList[i];\n if (isCombineMorphing(from)) {\n addFromPath(from.childrenRef());\n }\n else if (from instanceof Path) {\n fromPathList.push(from);\n }\n }\n }\n if (isCombineMorphing(fromPath)) {\n addFromPath(fromPath.childrenRef());\n var fromLen = fromPathList.length;\n if (fromLen < toLen) {\n var k = 0;\n for (var i = fromLen; i < toLen; i++) {\n fromPathList.push(clonePath(fromPathList[k++ % fromLen]));\n }\n }\n fromPathList.length = toLen;\n }\n else {\n fromPathList = dividePath({ path: fromPath, count: toLen });\n var fromPathTransform = fromPath.getComputedTransform();\n for (var i = 0; i < fromPathList.length; i++) {\n fromPathList[i].setLocalTransform(fromPathTransform);\n }\n if (fromPathList.length !== toLen) {\n console.error('Invalid morphing: unmatched splitted path');\n return createEmptyReturn();\n }\n }\n fromPathList = sortPaths(fromPathList);\n toPathList = sortPaths(toPathList);\n var individualDelay = animationOpts.individualDelay;\n for (var i = 0; i < toLen; i++) {\n var indivdualAnimationOpts = individualDelay ? defaults({\n delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i])\n }, animationOpts) : animationOpts;\n morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts);\n }\n return {\n fromIndividuals: fromPathList,\n toIndividuals: toPathList,\n count: toPathList.length\n };\n}\nexport { split as defaultDividePath };\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { separateMorph, combineMorph, morphPath, isCombineMorphing } from 'zrender/lib/tool/morphPath.js';\nimport { Path } from '../util/graphic.js';\nimport { defaults, isArray } from 'zrender/lib/core/util.js';\nimport { getAnimationConfig } from './basicTransition.js';\nimport { clonePath } from 'zrender/lib/tool/path.js';\nfunction isMultiple(elements) {\n return isArray(elements[0]);\n}\nfunction prepareMorphBatches(one, many) {\n var batches = [];\n var batchCount = one.length;\n for (var i = 0; i < batchCount; i++) {\n batches.push({\n one: one[i],\n many: []\n });\n }\n for (var i = 0; i < many.length; i++) {\n var len = many[i].length;\n var k = void 0;\n for (k = 0; k < len; k++) {\n batches[k % batchCount].many.push(many[i][k]);\n }\n }\n var off = 0;\n // If one has more paths than each one of many. average them.\n for (var i = batchCount - 1; i >= 0; i--) {\n if (!batches[i].many.length) {\n var moveFrom = batches[off].many;\n if (moveFrom.length <= 1) {\n // Not enough\n // Start from the first one.\n if (off) {\n off = 0;\n } else {\n return batches;\n }\n }\n var len = moveFrom.length;\n var mid = Math.ceil(len / 2);\n batches[i].many = moveFrom.slice(mid, len);\n batches[off].many = moveFrom.slice(0, mid);\n off++;\n }\n }\n return batches;\n}\nvar pathDividers = {\n clone: function (params) {\n var ret = [];\n // Fitting the alpha\n var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count);\n for (var i = 0; i < params.count; i++) {\n var cloned = clonePath(params.path);\n cloned.setStyle('opacity', approxOpacity);\n ret.push(cloned);\n }\n return ret;\n },\n // Use the default divider\n split: null\n};\nexport function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) {\n if (!from.length || !to.length) {\n return;\n }\n var updateAnimationCfg = getAnimationConfig('update', seriesModel, dataIndex);\n if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) {\n return;\n }\n var animationDelay = seriesModel.getModel('universalTransition').get('delay');\n var animationCfg = Object.assign({\n // Need to setToFinal so the further calculation based on the style can be correct.\n // Like emphasis color.\n setToFinal: true\n }, updateAnimationCfg);\n var many;\n var one;\n if (isMultiple(from)) {\n // manyToOne\n many = from;\n one = to;\n }\n if (isMultiple(to)) {\n // oneToMany\n many = to;\n one = from;\n }\n function morphOneBatch(batch, fromIsMany, animateIndex, animateCount, forceManyOne) {\n var batchMany = batch.many;\n var batchOne = batch.one;\n if (batchMany.length === 1 && !forceManyOne) {\n // Is one to one\n var batchFrom = fromIsMany ? batchMany[0] : batchOne;\n var batchTo = fromIsMany ? batchOne : batchMany[0];\n if (isCombineMorphing(batchFrom)) {\n // Keep doing combine animation.\n morphOneBatch({\n many: [batchFrom],\n one: batchTo\n }, true, animateIndex, animateCount, true);\n } else {\n var individualAnimationCfg = animationDelay ? defaults({\n delay: animationDelay(animateIndex, animateCount)\n }, animationCfg) : animationCfg;\n morphPath(batchFrom, batchTo, individualAnimationCfg);\n animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg);\n }\n } else {\n var separateAnimationCfg = defaults({\n dividePath: pathDividers[divideShape],\n individualDelay: animationDelay && function (idx, count, fromPath, toPath) {\n return animationDelay(idx + animateIndex, animateCount);\n }\n }, animationCfg);\n var _a = fromIsMany ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg),\n fromIndividuals = _a.fromIndividuals,\n toIndividuals = _a.toIndividuals;\n var count = fromIndividuals.length;\n for (var k = 0; k < count; k++) {\n var individualAnimationCfg = animationDelay ? defaults({\n delay: animationDelay(k, count)\n }, animationCfg) : animationCfg;\n animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany ? batchMany[k] : batch.one, fromIsMany ? batch.one : batchMany[k], individualAnimationCfg);\n }\n }\n }\n var fromIsMany = many ? many === from\n // Is one to one. If the path number not match. also needs do merge and separate morphing.\n : from.length > to.length;\n var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]);\n var animateCount = 0;\n for (var i = 0; i < morphBatches.length; i++) {\n animateCount += morphBatches[i].many.length;\n }\n var animateIndex = 0;\n for (var i = 0; i < morphBatches.length; i++) {\n morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount);\n animateIndex += morphBatches[i].many.length;\n }\n}\nexport function getPathList(elements) {\n if (!elements) {\n return [];\n }\n if (isArray(elements)) {\n var pathList_1 = [];\n for (var i = 0; i < elements.length; i++) {\n pathList_1.push(getPathList(elements[i]));\n }\n return pathList_1;\n }\n var pathList = [];\n elements.traverse(function (el) {\n if (el instanceof Path && !el.disableMorphing && !el.invisible && !el.ignore) {\n pathList.push(el);\n }\n });\n return pathList;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Universal transitions that can animate between any shapes(series) and any properties in any amounts.\nimport { SERIES_UNIVERSAL_TRANSITION_PROP } from '../model/Series.js';\nimport { createHashMap, each, map, filter, isArray, extend } from 'zrender/lib/core/util.js';\nimport { applyMorphAnimation, getPathList } from './morphTransitionHelper.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { initProps } from '../util/graphic.js';\nimport DataDiffer from '../data/DataDiffer.js';\nimport { makeInner, normalizeToArray } from '../util/model.js';\nimport { warn } from '../util/log.js';\nimport { getAnimationConfig, getOldStyle } from './basicTransition.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nvar DATA_COUNT_THRESHOLD = 1e4;\nvar TRANSITION_NONE = 0;\nvar TRANSITION_P2C = 1;\nvar TRANSITION_C2P = 2;\n;\nvar getUniversalTransitionGlobalStore = makeInner();\nfunction getDimension(data, visualDimension) {\n var dimensions = data.dimensions;\n for (var i = 0; i < dimensions.length; i++) {\n var dimInfo = data.getDimensionInfo(dimensions[i]);\n if (dimInfo && dimInfo.otherDims[visualDimension] === 0) {\n return dimensions[i];\n }\n }\n}\n// get value by dimension. (only get value of itemGroupId or childGroupId, so convert it to string)\nfunction getValueByDimension(data, dataIndex, dimension) {\n var dimInfo = data.getDimensionInfo(dimension);\n var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta;\n if (dimInfo) {\n var value = data.get(dimInfo.name, dataIndex);\n if (dimOrdinalMeta) {\n return dimOrdinalMeta.categories[value] || value + '';\n }\n return value + '';\n }\n}\nfunction getGroupId(data, dataIndex, dataGroupId, isChild) {\n // try to get groupId from encode\n var visualDimension = isChild ? 'itemChildGroupId' : 'itemGroupId';\n var groupIdDim = getDimension(data, visualDimension);\n if (groupIdDim) {\n var groupId = getValueByDimension(data, dataIndex, groupIdDim);\n return groupId;\n }\n // try to get groupId from raw data item\n var rawDataItem = data.getRawDataItem(dataIndex);\n var property = isChild ? 'childGroupId' : 'groupId';\n if (rawDataItem && rawDataItem[property]) {\n return rawDataItem[property] + '';\n }\n // fallback\n if (isChild) {\n return;\n }\n // try to use series.dataGroupId as groupId, otherwise use dataItem's id as groupId\n return dataGroupId || data.getId(dataIndex);\n}\n// flatten all data items from different serieses into one arrary\nfunction flattenDataDiffItems(list) {\n var items = [];\n each(list, function (seriesInfo) {\n var data = seriesInfo.data;\n var dataGroupId = seriesInfo.dataGroupId;\n if (data.count() > DATA_COUNT_THRESHOLD) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Universal transition is disabled on large data > 10k.');\n }\n return;\n }\n var indices = data.getIndices();\n for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) {\n items.push({\n data: data,\n groupId: getGroupId(data, dataIndex, dataGroupId, false),\n childGroupId: getGroupId(data, dataIndex, dataGroupId, true),\n divide: seriesInfo.divide,\n dataIndex: dataIndex\n });\n }\n });\n return items;\n}\nfunction fadeInElement(newEl, newSeries, newIndex) {\n newEl.traverse(function (el) {\n if (el instanceof Path) {\n // TODO use fade in animation for target element.\n initProps(el, {\n style: {\n opacity: 0\n }\n }, newSeries, {\n dataIndex: newIndex,\n isFrom: true\n });\n }\n });\n}\nfunction removeEl(el) {\n if (el.parent) {\n // Bake parent transform to element.\n // So it can still have proper transform to transition after it's removed.\n var computedTransform = el.getComputedTransform();\n el.setLocalTransform(computedTransform);\n el.parent.remove(el);\n }\n}\nfunction stopAnimation(el) {\n el.stopAnimation();\n if (el.isGroup) {\n el.traverse(function (child) {\n child.stopAnimation();\n });\n }\n}\nfunction animateElementStyles(el, dataIndex, seriesModel) {\n var animationConfig = getAnimationConfig('update', seriesModel, dataIndex);\n animationConfig && el.traverse(function (child) {\n if (child instanceof Displayable) {\n var oldStyle = getOldStyle(child);\n if (oldStyle) {\n child.animateFrom({\n style: oldStyle\n }, animationConfig);\n }\n }\n });\n}\nfunction isAllIdSame(oldDiffItems, newDiffItems) {\n var len = oldDiffItems.length;\n if (len !== newDiffItems.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var oldItem = oldDiffItems[i];\n var newItem = newDiffItems[i];\n if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) {\n return false;\n }\n }\n return true;\n}\nfunction transitionBetween(oldList, newList, api) {\n var oldDiffItems = flattenDataDiffItems(oldList);\n var newDiffItems = flattenDataDiffItems(newList);\n function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) {\n if (rawFrom || from) {\n to.animateFrom({\n style: rawFrom && rawFrom !== from\n // dividingMethod like clone may override the style(opacity)\n // So extend it to raw style.\n ? extend(extend({}, rawFrom.style), from.style) : from.style\n }, animationCfg);\n }\n }\n var hasMorphAnimation = false;\n /**\n * With groupId and childGroupId, we can build parent-child relationships between dataItems.\n * However, we should mind the parent-child \"direction\" between old and new options.\n *\n * For example, suppose we have two dataItems from two series.data:\n *\n * dataA: [ dataB: [\n * { {\n * value: 5, value: 3,\n * groupId: 'creatures', groupId: 'animals',\n * childGroupId: 'animals' childGroupId: 'dogs'\n * }, },\n * ... ...\n * ] ]\n *\n * where dataA is belong to optionA and dataB is belong to optionB.\n *\n * When we `setOption(optionB)` from optionA, we choose childGroupId of dataItemA and groupId of\n * dataItemB as keys so the two keys are matched (both are 'animals'), then universalTransition\n * will work. This derection is \"parent -> child\".\n *\n * If we `setOption(optionA)` from optionB, we also choose groupId of dataItemB and childGroupId\n * of dataItemA as keys and universalTransition will work. This derection is \"child -> parent\".\n *\n * If there is no childGroupId specified, which means no multiLevelDrillDown/Up is needed and no\n * parent-child relationship exists. This direction is \"none\".\n *\n * So we need to know whether to use groupId or childGroupId as the key when we call the keyGetter\n * functions. Thus, we need to decide the direction first.\n *\n * The rule is:\n *\n * if (all childGroupIds in oldDiffItems and all groupIds in newDiffItems have common value) {\n * direction = 'parent -> child';\n * } else if (all groupIds in oldDiffItems and all childGroupIds in newDiffItems have common value) {\n * direction = 'child -> parent';\n * } else {\n * direction = 'none';\n * }\n */\n var direction = TRANSITION_NONE;\n // find all groupIds and childGroupIds from oldDiffItems\n var oldGroupIds = createHashMap();\n var oldChildGroupIds = createHashMap();\n oldDiffItems.forEach(function (item) {\n item.groupId && oldGroupIds.set(item.groupId, true);\n item.childGroupId && oldChildGroupIds.set(item.childGroupId, true);\n });\n // traverse newDiffItems and decide the direction according to the rule\n for (var i = 0; i < newDiffItems.length; i++) {\n var newGroupId = newDiffItems[i].groupId;\n if (oldChildGroupIds.get(newGroupId)) {\n direction = TRANSITION_P2C;\n break;\n }\n var newChildGroupId = newDiffItems[i].childGroupId;\n if (newChildGroupId && oldGroupIds.get(newChildGroupId)) {\n direction = TRANSITION_C2P;\n break;\n }\n }\n function createKeyGetter(isOld, onlyGetId) {\n return function (diffItem) {\n var data = diffItem.data;\n var dataIndex = diffItem.dataIndex;\n // TODO if specified dim\n if (onlyGetId) {\n return data.getId(dataIndex);\n }\n if (isOld) {\n return direction === TRANSITION_P2C ? diffItem.childGroupId : diffItem.groupId;\n } else {\n return direction === TRANSITION_C2P ? diffItem.childGroupId : diffItem.groupId;\n }\n };\n }\n // Use id if it's very likely to be an one to one animation\n // It's more robust than groupId\n // TODO Check if key dimension is specified.\n var useId = isAllIdSame(oldDiffItems, newDiffItems);\n var isElementStillInChart = {};\n if (!useId) {\n // We may have different diff strategy with basicTransition if we use other dimension as key.\n // If so, we can't simply check if oldEl is same with newEl. We need a map to check if oldEl is still being used in the new chart.\n // We can't use the elements that already being morphed. Let it keep it's original basic transition.\n for (var i = 0; i < newDiffItems.length; i++) {\n var newItem = newDiffItems[i];\n var el = newItem.data.getItemGraphicEl(newItem.dataIndex);\n if (el) {\n isElementStillInChart[el.id] = true;\n }\n }\n }\n function updateOneToOne(newIndex, oldIndex) {\n var oldItem = oldDiffItems[oldIndex];\n var newItem = newDiffItems[newIndex];\n var newSeries = newItem.data.hostModel;\n // TODO Mark this elements is morphed and don't morph them anymore\n var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);\n var newEl = newItem.data.getItemGraphicEl(newItem.dataIndex);\n // Can't handle same elements.\n if (oldEl === newEl) {\n newEl && animateElementStyles(newEl, newItem.dataIndex, newSeries);\n return;\n }\n if (\n // We can't use the elements that already being morphed\n oldEl && isElementStillInChart[oldEl.id]) {\n return;\n }\n if (newEl) {\n // TODO: If keep animating the group in case\n // some of the elements don't want to be morphed.\n // TODO Label?\n stopAnimation(newEl);\n if (oldEl) {\n stopAnimation(oldEl);\n // If old element is doing leaving animation. stop it and remove it immediately.\n removeEl(oldEl);\n hasMorphAnimation = true;\n applyMorphAnimation(getPathList(oldEl), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps);\n } else {\n fadeInElement(newEl, newSeries, newIndex);\n }\n }\n // else keep oldEl leaving animation.\n }\n\n new DataDiffer(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, 'multiple').update(updateOneToOne).updateManyToOne(function (newIndex, oldIndices) {\n var newItem = newDiffItems[newIndex];\n var newData = newItem.data;\n var newSeries = newData.hostModel;\n var newEl = newData.getItemGraphicEl(newItem.dataIndex);\n var oldElsList = filter(map(oldIndices, function (idx) {\n return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex);\n }), function (oldEl) {\n return oldEl && oldEl !== newEl && !isElementStillInChart[oldEl.id];\n });\n if (newEl) {\n stopAnimation(newEl);\n if (oldElsList.length) {\n // If old element is doing leaving animation. stop it and remove it immediately.\n each(oldElsList, function (oldEl) {\n stopAnimation(oldEl);\n removeEl(oldEl);\n });\n hasMorphAnimation = true;\n applyMorphAnimation(getPathList(oldElsList), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps);\n } else {\n fadeInElement(newEl, newSeries, newItem.dataIndex);\n }\n }\n // else keep oldEl leaving animation.\n }).updateOneToMany(function (newIndices, oldIndex) {\n var oldItem = oldDiffItems[oldIndex];\n var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);\n // We can't use the elements that already being morphed\n if (oldEl && isElementStillInChart[oldEl.id]) {\n return;\n }\n var newElsList = filter(map(newIndices, function (idx) {\n return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex);\n }), function (el) {\n return el && el !== oldEl;\n });\n var newSeris = newDiffItems[newIndices[0]].data.hostModel;\n if (newElsList.length) {\n each(newElsList, function (newEl) {\n return stopAnimation(newEl);\n });\n if (oldEl) {\n stopAnimation(oldEl);\n // If old element is doing leaving animation. stop it and remove it immediately.\n removeEl(oldEl);\n hasMorphAnimation = true;\n applyMorphAnimation(getPathList(oldEl), getPathList(newElsList), oldItem.divide,\n // Use divide on old.\n newSeris, newIndices[0], updateMorphingPathProps);\n } else {\n each(newElsList, function (newEl) {\n return fadeInElement(newEl, newSeris, newIndices[0]);\n });\n }\n }\n // else keep oldEl leaving animation.\n }).updateManyToMany(function (newIndices, oldIndices) {\n // If two data are same and both have groupId.\n // Normally they should be diff by id.\n new DataDiffer(oldIndices, newIndices, function (rawIdx) {\n return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex);\n }, function (rawIdx) {\n return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex);\n }).update(function (newIndex, oldIndex) {\n // Use the original index\n updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]);\n }).execute();\n }).execute();\n if (hasMorphAnimation) {\n each(newList, function (_a) {\n var data = _a.data;\n var seriesModel = data.hostModel;\n var view = seriesModel && api.getViewOfSeriesModel(seriesModel);\n var animationCfg = getAnimationConfig('update', seriesModel, 0); // use 0 index.\n if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) {\n view.group.traverse(function (el) {\n if (el instanceof Path && !el.animators.length) {\n // We can't accept there still exists element that has no animation\n // if universalTransition is enabled\n el.animateFrom({\n style: {\n opacity: 0\n }\n }, animationCfg);\n }\n });\n }\n });\n }\n}\nfunction getSeriesTransitionKey(series) {\n var seriesKey = series.getModel('universalTransition').get('seriesKey');\n if (!seriesKey) {\n // Use series id by default.\n return series.id;\n }\n return seriesKey;\n}\nfunction convertArraySeriesKeyToString(seriesKey) {\n if (isArray(seriesKey)) {\n // Order independent.\n return seriesKey.sort().join(',');\n }\n return seriesKey;\n}\nfunction getDivideShapeFromData(data) {\n if (data.hostModel) {\n return data.hostModel.getModel('universalTransition').get('divideShape');\n }\n}\nfunction findTransitionSeriesBatches(globalStore, params) {\n var updateBatches = createHashMap();\n var oldDataMap = createHashMap();\n // Map that only store key in array seriesKey.\n // Which is used to query the old data when transition from one to multiple series.\n var oldDataMapForSplit = createHashMap();\n each(globalStore.oldSeries, function (series, idx) {\n var oldDataGroupId = globalStore.oldDataGroupIds[idx];\n var oldData = globalStore.oldData[idx];\n var transitionKey = getSeriesTransitionKey(series);\n var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);\n oldDataMap.set(transitionKeyStr, {\n dataGroupId: oldDataGroupId,\n data: oldData\n });\n if (isArray(transitionKey)) {\n // Same key can't in different array seriesKey.\n each(transitionKey, function (key) {\n oldDataMapForSplit.set(key, {\n key: transitionKeyStr,\n dataGroupId: oldDataGroupId,\n data: oldData\n });\n });\n }\n });\n function checkTransitionSeriesKeyDuplicated(transitionKeyStr) {\n if (updateBatches.get(transitionKeyStr)) {\n warn(\"Duplicated seriesKey in universalTransition \" + transitionKeyStr);\n }\n }\n each(params.updatedSeries, function (series) {\n if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {\n var newDataGroupId = series.get('dataGroupId');\n var newData = series.getData();\n var transitionKey = getSeriesTransitionKey(series);\n var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);\n // Only transition between series with same id.\n var oldData = oldDataMap.get(transitionKeyStr);\n // string transition key is the best match.\n if (oldData) {\n if (process.env.NODE_ENV !== 'production') {\n checkTransitionSeriesKeyDuplicated(transitionKeyStr);\n }\n // TODO check if data is same?\n updateBatches.set(transitionKeyStr, {\n oldSeries: [{\n dataGroupId: oldData.dataGroupId,\n divide: getDivideShapeFromData(oldData.data),\n data: oldData.data\n }],\n newSeries: [{\n dataGroupId: newDataGroupId,\n divide: getDivideShapeFromData(newData),\n data: newData\n }]\n });\n } else {\n // Transition from multiple series.\n // e.g. 'female', 'male' -> ['female', 'male']\n if (isArray(transitionKey)) {\n if (process.env.NODE_ENV !== 'production') {\n checkTransitionSeriesKeyDuplicated(transitionKeyStr);\n }\n var oldSeries_1 = [];\n each(transitionKey, function (key) {\n var oldData = oldDataMap.get(key);\n if (oldData.data) {\n oldSeries_1.push({\n dataGroupId: oldData.dataGroupId,\n divide: getDivideShapeFromData(oldData.data),\n data: oldData.data\n });\n }\n });\n if (oldSeries_1.length) {\n updateBatches.set(transitionKeyStr, {\n oldSeries: oldSeries_1,\n newSeries: [{\n dataGroupId: newDataGroupId,\n data: newData,\n divide: getDivideShapeFromData(newData)\n }]\n });\n }\n } else {\n // Try transition to multiple series.\n // e.g. ['female', 'male'] -> 'female', 'male'\n var oldData_1 = oldDataMapForSplit.get(transitionKey);\n if (oldData_1) {\n var batch = updateBatches.get(oldData_1.key);\n if (!batch) {\n batch = {\n oldSeries: [{\n dataGroupId: oldData_1.dataGroupId,\n data: oldData_1.data,\n divide: getDivideShapeFromData(oldData_1.data)\n }],\n newSeries: []\n };\n updateBatches.set(oldData_1.key, batch);\n }\n batch.newSeries.push({\n dataGroupId: newDataGroupId,\n data: newData,\n divide: getDivideShapeFromData(newData)\n });\n }\n }\n }\n }\n });\n return updateBatches;\n}\nfunction querySeries(series, finder) {\n for (var i = 0; i < series.length; i++) {\n var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id;\n if (found) {\n return i;\n }\n }\n}\nfunction transitionSeriesFromOpt(transitionOpt, globalStore, params, api) {\n var from = [];\n var to = [];\n each(normalizeToArray(transitionOpt.from), function (finder) {\n var idx = querySeries(globalStore.oldSeries, finder);\n if (idx >= 0) {\n from.push({\n dataGroupId: globalStore.oldDataGroupIds[idx],\n data: globalStore.oldData[idx],\n // TODO can specify divideShape in transition.\n divide: getDivideShapeFromData(globalStore.oldData[idx]),\n groupIdDim: finder.dimension\n });\n }\n });\n each(normalizeToArray(transitionOpt.to), function (finder) {\n var idx = querySeries(params.updatedSeries, finder);\n if (idx >= 0) {\n var data = params.updatedSeries[idx].getData();\n to.push({\n dataGroupId: globalStore.oldDataGroupIds[idx],\n data: data,\n divide: getDivideShapeFromData(data),\n groupIdDim: finder.dimension\n });\n }\n });\n if (from.length > 0 && to.length > 0) {\n transitionBetween(from, to, api);\n }\n}\nexport function installUniversalTransition(registers) {\n registers.registerUpdateLifecycle('series:beforeupdate', function (ecMOdel, api, params) {\n each(normalizeToArray(params.seriesTransition), function (transOpt) {\n each(normalizeToArray(transOpt.to), function (finder) {\n var series = params.updatedSeries;\n for (var i = 0; i < series.length; i++) {\n if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) {\n series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true;\n }\n }\n });\n });\n });\n registers.registerUpdateLifecycle('series:transition', function (ecModel, api, params) {\n // TODO api provide an namespace that can save stuff per instance\n var globalStore = getUniversalTransitionGlobalStore(api);\n // TODO multiple to multiple series.\n if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) {\n // TODO transitionOpt was used in an old implementation and can be removed now\n // Use give transition config if its' give;\n var transitionOpt = params.seriesTransition;\n if (transitionOpt) {\n each(normalizeToArray(transitionOpt), function (opt) {\n transitionSeriesFromOpt(opt, globalStore, params, api);\n });\n } else {\n // Else guess from series based on transition series key.\n var updateBatches_1 = findTransitionSeriesBatches(globalStore, params);\n each(updateBatches_1.keys(), function (key) {\n var batch = updateBatches_1.get(key);\n transitionBetween(batch.oldSeries, batch.newSeries, api);\n });\n }\n // Reset\n each(params.updatedSeries, function (series) {\n // Reset;\n if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) {\n series[SERIES_UNIVERSAL_TRANSITION_PROP] = false;\n }\n });\n }\n // Save all series of current update. Not only the updated one.\n var allSeries = ecModel.getSeries();\n var savedSeries = globalStore.oldSeries = [];\n var savedDataGroupIds = globalStore.oldDataGroupIds = [];\n var savedData = globalStore.oldData = [];\n for (var i = 0; i < allSeries.length; i++) {\n var data = allSeries[i].getData();\n // Only save the data that can have transition.\n // Avoid large data costing too much extra memory\n if (data.count() < DATA_COUNT_THRESHOLD) {\n savedSeries.push(allSeries[i]);\n savedDataGroupIds.push(allSeries[i].get('dataGroupId'));\n savedData.push(data);\n }\n }\n });\n}","@import '../../styles/host.scss';\n\n:host {\n width: var(--tct-area-chart-width, 100%);\n height: var(--tct-area-chart-height, 100%);\n display: block;\n}\n\n.container {\n width: 100%;\n height: 100%;\n}\n\n.chart-container {\n width: 100%;\n height: 100%;\n}\n","import { Component, Prop, h, ComponentInterface, Element, Watch, EventEmitter, Event } from '@stencil/core';\nimport * as echarts from 'echarts/core';\nimport {\n TitleComponent,\n TitleComponentOption,\n AriaComponent,\n AriaComponentOption,\n GridComponent,\n} from 'echarts/components';\nimport { LineChart, LineSeriesOption } from 'echarts/charts';\nimport { UniversalTransition } from 'echarts/features';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { loc, overrideFocus } from 'src/utils';\nimport { getCSSProperty, isValidColor, formatValue } from 'src/utils/charting';\nimport { IChartData } from 'q2-tecton-common/lib/types/element-types';\n\necharts.use([AriaComponent, LineChart, CanvasRenderer, UniversalTransition, GridComponent, TitleComponent]);\n\ntype EChartsOption = echarts.ComposeOption<AriaComponentOption | LineSeriesOption | TitleComponentOption>;\n\n@Component({ tag: 'q2-chart-area', shadow: true, styleUrl: 'q2-chart-area.scss' })\nexport class Q2ChartArea implements ComponentInterface {\n // #region Own Properties\n\n chart: echarts.ECharts;\n chartContainer: HTMLDivElement;\n chartContainerStyles: CSSStyleDeclaration;\n hostElementStyles: CSSStyleDeclaration;\n resizeEventListener: EventListener;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /** Controls alignment of the chart name when its visible. */\n @Prop({ reflect: true })\n alignChartName: 'left' | 'right' | 'center';\n\n /**\n * Controls area fill color of chart. Accepts variables, hex codes, and CSS color names.\n *\n * **Examples:**\n * @snippet\n * element.areaColor = \"#ff0000\";\n * element.areaColor = \"papayawhip\";\n * element.areaColor = \"var(--t-accent-1)\";\n */\n @Prop({ reflect: true })\n areaColor: string;\n\n /**\n * The title of the chart. We recommend always including this for accessibility purposes.\n *\n * It is hidden by default, but can be made visible with the `showChartName` variable.\n * @localizable\n */\n @Prop({ reflect: true })\n chartName: string;\n\n /** A subtitile to the chart name. Often used to provide a brief description of what the data represents. */\n @Prop({ reflect: true })\n chartSubTitle: string;\n\n /** An array of objects that contain the data to be displayed. */\n @Prop()\n data: IChartData[] = [];\n\n /**\n * Allows control of how labels on the name axis will be handled if the text length is wider than the available space.\n * Values will ellipsize if the truncate option is used.\n */\n @Prop({ reflect: true })\n dataNamesOverflow: 'break' | 'truncate';\n\n /**\n * Sets width available for labels on the name axis.\n * It can be used in coordination with `dataNamesOverflow` to control where the label text breaks or truncates.\n */\n @Prop({ reflect: true })\n dataNamesWidth: number;\n\n /** Controls whether values on the value axis are shown as numbers or as currency. */\n @Prop({ reflect: true })\n format: 'currency' | 'default';\n\n /**\n * Can be used in coordination with the currency format property to control decimal handling.\n * Accepts `Ndec` where N is a number. (e.g. `2dec`)\n */\n @Prop({ reflect: true })\n formatModifier: string;\n\n /** Controls the direction or viibility of grid lines on the chart. */\n @Prop({ reflect: true })\n gridLines: 'horizontal' | 'vertical' | 'off';\n\n /**\n * Sets chart padding around the grid.\n * Each value in the object will be interpreted as pixels.\n *\n * **Examples:**\n * @snippet\n * chart.gridPadding = { left: 10, right: 10, top: 20, bottom: 20 };\n */\n @Prop()\n gridPadding: { left?: number; right?: number; top?: number; bottom?: number };\n\n /** Controls visibility of labels on the name axis. */\n @Prop({ reflect: true })\n hideNameAxisLabels: boolean = false;\n\n /** Controls visibility of labels on the value axis. */\n @Prop({ reflect: true })\n hideValueAxisLabels: boolean = false;\n\n /**\n * Controls color of the data line on the chart. Accepts variables, hex codes, and CSS color names.\n *\n * **Examples:**\n * @snippet\n * element.areaColor = \"#ff0000\";\n * element.areaColor = \"papayawhip\";\n * element.areaColor = \"var(--t-accent-1)\";\n */\n @Prop({ reflect: true })\n lineColor: string;\n\n /**\n * Controls the position of text on the names axis by centering the text to the bar at a 45° angle.\n * Can be used when space is limited or with longer name labels.\n */\n @Prop({ reflect: true })\n offsetDataNames: boolean = false;\n\n /**\n * Controls the position of text on the values axis by centering the text to the bar at a 45° angle.\n * Can be used when space is limited or with longer name labels.\n */\n @Prop({ reflect: true })\n offsetDataValues: boolean = false;\n\n /**\n * Controls color of vertical pointer on a line chart. Accepts variables, hex codes, and CSS color names.\n *\n * **Examples:**\n * @snippet\n * element.areaColor = \"#ff0000\";\n * element.areaColor = \"papayawhip\";\n * element.areaColor = \"var(--t-accent-1)\";\n */\n @Prop({ reflect: true })\n pointerLineColor: string;\n\n /** Controls the style of the vertical poiner line. */\n @Prop({ reflect: true })\n pointerLineStyle: 'solid' | 'dashed';\n\n /** Controls the visibility of the chart name at the top of the chart. */\n @Prop({ reflect: true })\n showChartName: boolean = false;\n\n /** Controls the visibility of a value label when a data point is shown on the chart. */\n @Prop({ reflect: true })\n showDatapointLabels: boolean = false;\n\n /**\n * Controls making the area fill color into a gradient.\n * The gradient starts at the top with the `areaColor` value, and fades to white.\n */\n @Prop({ reflect: true })\n showGradient: boolean = false;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when a data point is clicked.\n */\n @Event()\n change: EventEmitter<{\n index: number;\n data: IChartData;\n }>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.resizeEventListener);\n }\n\n componentDidLoad() {\n const chart = echarts.init(this.chartContainer);\n\n this.chart = chart;\n\n this.resizeEventListener = () => this.resizeChart();\n window.addEventListener('resize', this.resizeEventListener);\n\n this.cacheComputedStyles();\n this.updateChart(chart);\n this.setupChartEvents(chart);\n\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Watchers\n\n @Watch('data')\n @Watch('alignChartName')\n @Watch('chartName')\n @Watch('chartSubTitle')\n @Watch('lineColor')\n @Watch('pointerLineColor')\n @Watch('pointerLineStyle')\n @Watch('areaColor')\n @Watch('dataNamesOverflow')\n @Watch('dataNamesWidth')\n @Watch('format')\n @Watch('formatModifier')\n @Watch('hideNameAxisLabels')\n @Watch('hideValueAxisLabels')\n @Watch('offsetDataNames')\n @Watch('offsetDataValues')\n @Watch('showChartName')\n @Watch('showDatapointLabels')\n @Watch('showGradient')\n @Watch('gridLines')\n @Watch('gridPadding')\n propsUpdates() {\n this.updateChart(this.chart);\n }\n\n // #endregion\n // #region Local Methods\n\n cacheComputedStyles() {\n this.chartContainerStyles = getComputedStyle(this.chartContainer);\n this.hostElementStyles = getComputedStyle(this.hostElement);\n }\n\n getAreaFill() {\n if (this.showGradient) {\n return {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n {\n offset: 0,\n color: this.getColor(this.areaColor),\n },\n {\n offset: 1,\n color: 'white',\n },\n ],\n global: false,\n };\n }\n return this.getColor(this.areaColor);\n }\n\n getColor(color: string) {\n const primaryColor = getCSSProperty('var(--t-primary)', this.chartContainerStyles, this.hostElementStyles);\n const cssColorProp = getCSSProperty(color, this.chartContainerStyles, this.hostElementStyles);\n if (cssColorProp) return cssColorProp;\n if (isValidColor(color)) return color;\n return primaryColor;\n }\n\n resizeChart() {\n this.chart.resize();\n }\n\n setupChartEvents(chart: echarts.ECharts) {\n chart.on('finished', () => {\n const canvas = chart.getDom().querySelector('canvas');\n if (canvas?.hasAttribute('aria-hidden') ?? false) return;\n canvas.setAttribute('aria-hidden', 'true');\n });\n }\n\n updateChart(chart: echarts.ECharts) {\n const decimals = this.formatModifier?.includes('dec') ? this.formatModifier.replace('dec', '') : 0;\n\n const valueAxis = {\n type: 'value',\n axisLabel: {\n formatter: (value: number) =>\n formatValue(value, {\n type: this.format,\n decimals,\n }),\n rotate: this.offsetDataValues ? 45 : 0,\n margin: this.offsetDataValues ? 15 : 8,\n show: !this.hideValueAxisLabels,\n },\n splitLine: {\n show: this.gridLines === 'horizontal' || !this.gridLines,\n },\n };\n\n const categoryAxis = {\n type: 'category',\n boundaryGap: false,\n data: this.data.map(datum => loc(datum.name) || ''),\n axisLabel: {\n rotate: this.offsetDataNames ? 45 : 0,\n margin: this.offsetDataNames ? 15 : 8,\n width: this.dataNamesWidth || 50,\n overflow: this.dataNamesOverflow || 'none',\n truncate: 'ellipsis',\n show: !this.hideNameAxisLabels,\n },\n axisLine: {\n show: !this.hideNameAxisLabels,\n },\n axisTick: {\n show: !this.hideNameAxisLabels,\n },\n axisPointer: {\n show: true,\n type: 'line',\n label: {\n show: false,\n formatter: (params: any) => {\n const dataIndex = params.seriesData[0].dataIndex;\n this.change.emit({\n index: dataIndex,\n data: this.data[dataIndex],\n });\n },\n },\n lineStyle: {\n color: this.getColor(this.pointerLineColor || 'var(--t-gray-10)'),\n type: this.pointerLineStyle || 'solid',\n width: 1.5,\n },\n z: 1,\n },\n splitLine: {\n show: this.gridLines === 'vertical',\n },\n };\n\n return chart.setOption<EChartsOption>({\n aria: {\n enabled: true,\n },\n title: {\n text: loc(this.chartName),\n show: this.showChartName,\n left: this.alignChartName,\n subtext: this.chartSubTitle,\n },\n grid: {\n containLabel: true,\n ...this.gridPadding,\n },\n xAxis: categoryAxis,\n yAxis: valueAxis,\n series: [\n {\n data: this.data.map(datum => datum.value || 0),\n id: 'area',\n type: 'line',\n lineStyle: {\n color: this.getColor(this.lineColor),\n },\n itemStyle: {\n color: this.getColor(this.lineColor),\n },\n areaStyle: {\n color: this.getAreaFill(),\n },\n symbolSize: 10,\n showSymbol: false,\n label: {\n show: this.showDatapointLabels,\n position: 'right',\n formatter: (params: any) => {\n return formatValue(params.value as number, {\n type: this.format,\n decimals,\n });\n },\n },\n },\n ],\n });\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n return (\n <div class=\"container\">\n <div\n ref={el => (this.chartContainer = el)}\n class=\"chart-container\"\n role=\"img\"\n test-id=\"areaChartContainer\"\n ></div>\n </div>\n );\n }\n\n // #endregion\n}\n"],"version":3}
|