From b86fe88edcdcf7a1124b7fff474a3bcdc0f3b27f Mon Sep 17 00:00:00 2001 From: Pranay Date: Tue, 3 Feb 2026 10:59:52 +0530 Subject: [PATCH] aui_demo_addons --- .../aui_custom_dashboards/__init__.py | 1 + .../aui_custom_dashboards/__manifest__.py | 47 + .../controllers/__init__.py | 1 + .../controllers/dashboards.py | 724 +++ .../static/lib/apexcharts/apexcharts.js | 37 + .../static/lib/apexcharts/apexcharts.min.js | 14 + .../src/components/charts/chart_base.js | 65 + .../charts/inventory_charts/inventory_flow.js | 218 + .../inventory_charts/inventory_flow.xml | 131 + .../src/components/charts/kpi/kpi_card.js | 84 + .../src/components/charts/kpi/kpi_card.xml | 36 + .../src/components/dashboard/aui_dashboard.js | 116 + .../components/dashboard/aui_dashboard.xml | 62 + .../components/tabs/overview/overview_tab.js | 1177 +++++ .../components/tabs/overview/overview_tab.xml | 450 ++ .../tabs/overview/work_order_analysis.xml | 101 + .../src/components/tabs/sales/sales_tab.js | 8 + .../src/components/tabs/sales/sales_tab.xml | 14 + .../static/src/scss/aui_dashboard.scss | 394 ++ .../static/src/scss/dashboard.scss | 231 + .../static/src/xml/dashboard.xml | 74 + .../aui_custom_dashboards/views/view.xml | 21 + .../aui_custom_module/__init__.py | 1 + .../aui_custom_module/__manifest__.py | 46 + .../aui_custom_module/data/data.xml | 25 + .../aui_custom_module/models/__init__.py | 5 + .../models/purchase_order.py | 135 + .../aui_custom_module/models/sale.py | 32 + .../aui_custom_module/models/stock.py | 64 + .../aui_custom_module/models/work_order.py | 386 ++ .../models/work_order_inward.py | 579 +++ .../security/ir.model.access.csv | 7 + .../static/description/icon.jpg | Bin 0 -> 18115 bytes .../static/description/icon.png | Bin 0 -> 47073 bytes .../aui_custom_module/views/aui_business.xml | 246 + .../views/purchase_order.xml | 192 + .../aui_custom_module/views/sale.xml | 54 + .../aui_custom_module/views/stock.xml | 56 + .../views/work_order_inward_view.xml | 163 + .../views/work_order_view.xml | 140 + .../base_account_budget/README.rst | 46 + .../base_account_budget/__init__.py | 30 + .../base_account_budget/__manifest__.py | 51 + .../base_account_budget/doc/RELEASE_NOTES.md | 6 + .../base_account_budget/i18n/zh_CN.po | 410 ++ .../base_account_budget/models/__init__.py | 23 + .../models/account_analytic_account.py | 37 + .../models/account_budget.py | 212 + .../security/account_budget_security.xml | 31 + .../security/ir.model.access.csv | 7 + .../assets/icons/arrows-repeat.svg | 10 + .../description/assets/icons/banner-1.png | Bin 0 -> 215329 bytes .../description/assets/icons/banner-2.svg | 73 + .../description/assets/icons/banner-bg.png | Bin 0 -> 111419 bytes .../description/assets/icons/banner-bg.svg | 9 + .../description/assets/icons/banner-call.svg | 5 + .../description/assets/icons/banner-mail.svg | 5 + .../assets/icons/banner-pattern.svg | 343 ++ .../description/assets/icons/banner-promo.svg | 147 + .../description/assets/icons/brand-pair.svg | 41 + .../static/description/assets/icons/check.png | Bin 0 -> 3676 bytes .../description/assets/icons/chevron.png | Bin 0 -> 310 bytes .../description/assets/icons/close-icon.svg | 5 + .../static/description/assets/icons/cogs.png | Bin 0 -> 1377 bytes .../assets/icons/collabarate-icon.svg | 3 + .../description/assets/icons/consultation.png | Bin 0 -> 1458 bytes .../description/assets/icons/cybro-logo.png | Bin 0 -> 17281 bytes .../static/description/assets/icons/down.svg | 1 + .../description/assets/icons/ecom-black.png | Bin 0 -> 576 bytes .../assets/icons/education-black.png | Bin 0 -> 733 bytes .../static/description/assets/icons/faq.png | Bin 0 -> 4400 bytes .../description/assets/icons/feature-icon.svg | 10 + .../description/assets/icons/feature.png | Bin 0 -> 4091 bytes .../static/description/assets/icons/gear.svg | 10 + .../static/description/assets/icons/hero.gif | Bin 0 -> 756228 bytes .../description/assets/icons/hire-odoo.svg | 12 + .../description/assets/icons/hotel-black.png | Bin 0 -> 911 bytes .../description/assets/icons/license.png | Bin 0 -> 1095 bytes .../assets/icons/life-ring-icon.svg | 13 + .../description/assets/icons/lifebuoy.png | Bin 0 -> 1199 bytes .../static/description/assets/icons/mail.svg | 3 + .../assets/icons/manufacturing-black.png | Bin 0 -> 673 bytes .../static/description/assets/icons/notes.png | Bin 0 -> 2087 bytes .../assets/icons/notification icon.svg | 10 + .../assets/icons/odoo-consultancy.svg | 4 + .../assets/icons/odoo-licencing.svg | 3 + .../description/assets/icons/odoo-logo.png | Bin 0 -> 9192 bytes .../description/assets/icons/patter.svg | 9 + .../description/assets/icons/pattern1.png | Bin 0 -> 7183 bytes .../description/assets/icons/pos-black.png | Bin 0 -> 878 bytes .../assets/icons/puzzle-piece-icon.svg | 10 + .../description/assets/icons/puzzle.png | Bin 0 -> 653 bytes .../description/assets/icons/replace-icon.svg | 10 + .../assets/icons/restaurant-black.png | Bin 0 -> 905 bytes .../assets/icons/screenshot-main.png | Bin 0 -> 193286 bytes .../description/assets/icons/screenshot.png | Bin 0 -> 4413 bytes .../assets/icons/service-black.png | Bin 0 -> 839 bytes .../description/assets/icons/skype-fill.svg | 10 + .../static/description/assets/icons/skype.png | Bin 0 -> 6065 bytes .../static/description/assets/icons/skype.svg | 3 + .../description/assets/icons/star-1.svg | 53 + .../description/assets/icons/star-2.svg | 9 + .../description/assets/icons/support.png | Bin 0 -> 3892 bytes .../assets/icons/test-1 - Copy.png | Bin 0 -> 23639 bytes .../description/assets/icons/test-1.png | Bin 0 -> 1996 bytes .../description/assets/icons/test-2.png | Bin 0 -> 2390 bytes .../assets/icons/trading-black.png | Bin 0 -> 427 bytes .../description/assets/icons/training.png | Bin 0 -> 627 bytes .../description/assets/icons/translate.svg | 10 + .../description/assets/icons/update.png | Bin 0 -> 1225 bytes .../static/description/assets/icons/user.png | Bin 0 -> 988 bytes .../static/description/assets/icons/video.png | Bin 0 -> 3837 bytes .../description/assets/icons/whatsapp.png | Bin 0 -> 5097 bytes .../description/assets/icons/wrench-icon.svg | 10 + .../description/assets/icons/wrench.png | Bin 0 -> 1205 bytes .../static/description/assets/modules/1.jpg | Bin 0 -> 89432 bytes .../static/description/assets/modules/2.png | Bin 0 -> 47422 bytes .../static/description/assets/modules/3.jpg | Bin 0 -> 85319 bytes .../static/description/assets/modules/4.jpg | Bin 0 -> 92698 bytes .../static/description/assets/modules/5.jpg | Bin 0 -> 87388 bytes .../description/assets/screenshots/1.png | Bin 0 -> 97242 bytes .../description/assets/screenshots/2.png | Bin 0 -> 63080 bytes .../description/assets/screenshots/3.png | Bin 0 -> 94295 bytes .../description/assets/screenshots/4.png | Bin 0 -> 43934 bytes .../description/assets/screenshots/5.png | Bin 0 -> 168366 bytes .../description/assets/screenshots/6.png | Bin 0 -> 61443 bytes .../description/assets/screenshots/hero.gif | Bin 0 -> 145273 bytes .../static/description/banner.png | Bin 0 -> 91379 bytes .../static/description/icon.png | Bin 0 -> 13349 bytes .../static/description/index.html | 1116 +++++ .../views/account_analytic_account_views.xml | 47 + .../views/account_budget_views.xml | 351 ++ .../base_accounting_kit/README.rst | 46 + .../base_accounting_kit/__init__.py | 25 + .../base_accounting_kit/__manifest__.py | 123 + .../controllers/__init__.py | 22 + .../controllers/statement_report.py | 73 + .../data/account_financial_report_data.xml | 152 + .../data/account_pdc_data.xml | 25 + .../data/cash_flow_data.xml | 79 + .../data/followup_levels.xml | 14 + .../data/multiple_invoice_data.xml | 9 + .../data/recurring_entry_cron.xml | 14 + .../base_accounting_kit/doc/RELEASE_NOTES.md | 61 + .../base_accounting_kit/i18n/ar_001.po | 4132 ++++++++++++++++ .../base_accounting_kit/i18n/de_CH.po | 4132 ++++++++++++++++ .../base_accounting_kit/i18n/es_AR.po | 4132 ++++++++++++++++ .../base_accounting_kit/i18n/fr_BE.po | 4132 ++++++++++++++++ .../base_accounting_kit/i18n/uk_UA.po | 4132 ++++++++++++++++ .../base_accounting_kit/i18n/zh_CN.po | 4171 +++++++++++++++++ .../base_accounting_kit/i18n/zh_HK.po | 4130 ++++++++++++++++ .../base_accounting_kit/models/__init__.py | 43 + .../models/account_account.py | 112 + .../models/account_asset_asset.py | 563 +++ .../models/account_asset_category.py | 111 + .../models/account_asset_depreciation_line.py | 247 + .../models/account_bank_statement_line.py | 170 + .../models/account_followup.py | 35 + .../models/account_journal.py | 129 + .../models/account_move.py | 115 + .../models/account_move_line.py | 215 + .../models/account_payment.py | 200 + .../models/account_payment_method.py | 35 + .../models/account_recurring_entries_line.py | 33 + .../models/account_report.py | 81 + .../models/followup_line.py | 39 + .../models/multiple_invoice.py | 33 + .../models/multiple_invoice_layout.py | 158 + .../models/product_template.py | 45 + .../models/recurring_payments.py | 159 + .../base_accounting_kit/models/res_company.py | 71 + .../models/res_config_settings.py | 58 + .../base_accounting_kit/models/res_partner.py | 527 +++ .../base_accounting_kit/models/sale_order.py | 66 + .../base_accounting_kit/report/__init__.py | 35 + .../report/account_asset_report.py | 90 + .../report/account_asset_report_views.xml | 78 + .../report/account_bank_book.py | 175 + .../report/account_bank_book_template.xml | 133 + .../report/account_cash_book.py | 183 + .../report/account_cash_book_template.xml | 167 + .../report/account_day_book.py | 130 + .../report/account_day_book_template.xml | 115 + .../report/account_report_common_account.py | 78 + .../report/cash_flow_report.py | 215 + .../report/cash_flow_report_template.xml | 88 + .../report/general_ledger_report.py | 183 + .../report/general_ledger_report_template.xml | 117 + .../report/multiple_invoice_layouts.xml | 645 +++ .../report/multiple_invoice_report.py | 56 + .../multiple_invoice_report_template.xml | 307 ++ .../base_accounting_kit/report/report.xml | 97 + .../report/report_aged_partner.py | 297 ++ .../report/report_aged_partner_template.xml | 104 + .../report/report_financial.py | 157 + .../report/report_financial_template.xml | 145 + .../report/report_journal_audit.py | 160 + .../report/report_journal_audit_template.xml | 148 + .../report/report_partner_ledger.py | 159 + .../report/report_partner_ledger_template.xml | 111 + .../base_accounting_kit/report/report_tax.py | 114 + .../report/report_tax_template.xml | 75 + .../report/report_trial_balance.py | 112 + .../report/report_trial_balance_template.xml | 97 + .../report/res_partner_reports.xml | 14 + .../report/res_partner_templates.xml | 76 + .../security/ir.model.access.csv | 49 + .../base_accounting_kit/security/security.xml | 38 + .../assets/icons/accounting_kit1.png | Bin 0 -> 29353 bytes .../assets/icons/accounting_kit10.png | Bin 0 -> 1041926 bytes .../assets/icons/accounting_kit11.png | Bin 0 -> 897124 bytes .../assets/icons/accounting_kit2.png | Bin 0 -> 5081 bytes .../assets/icons/accounting_kit3.png | Bin 0 -> 190898 bytes .../assets/icons/accounting_kit4.jpg | Bin 0 -> 20018 bytes .../assets/icons/accounting_kit5.png | Bin 0 -> 20948 bytes .../assets/icons/accounting_kit6.png | Bin 0 -> 7060 bytes .../assets/icons/accounting_kit7.png | Bin 0 -> 10653 bytes .../assets/icons/accounting_kit8.png | Bin 0 -> 21587 bytes .../assets/icons/accounting_kit9.png | Bin 0 -> 18192 bytes .../description/assets/icons/ajmaljk.png | Bin 0 -> 51950 bytes .../assets/icons/arrows-repeat.svg | 10 + .../description/assets/icons/banner-1.png | Bin 0 -> 215329 bytes .../description/assets/icons/banner-2.svg | 73 + .../description/assets/icons/banner-bg.png | Bin 0 -> 111419 bytes .../description/assets/icons/banner-bg.svg | 9 + .../description/assets/icons/banner-call.svg | 5 + .../description/assets/icons/banner-mail.svg | 5 + .../assets/icons/banner-pattern.svg | 343 ++ .../description/assets/icons/banner-promo.svg | 147 + .../description/assets/icons/blog-icon.png | Bin 0 -> 841 bytes .../description/assets/icons/blog-icon.svg | 3 + .../description/assets/icons/brand-pair.svg | 41 + .../static/description/assets/icons/check.png | Bin 0 -> 3676 bytes .../description/assets/icons/chevron.png | Bin 0 -> 310 bytes .../description/assets/icons/close-icon.svg | 5 + .../static/description/assets/icons/cogs.png | Bin 0 -> 1377 bytes .../assets/icons/collabarate-icon.svg | 3 + .../description/assets/icons/consultation.png | Bin 0 -> 1458 bytes .../description/assets/icons/copy-clip.svg | 3 + .../description/assets/icons/copylink.svg | 37 + .../description/assets/icons/cybro-logo.png | Bin 0 -> 17281 bytes .../static/description/assets/icons/down.svg | 1 + .../description/assets/icons/ecom-black.png | Bin 0 -> 576 bytes .../assets/icons/education-black.png | Bin 0 -> 733 bytes .../assets/icons/external-link-line.svg | 3 + .../static/description/assets/icons/faq.png | Bin 0 -> 4400 bytes .../description/assets/icons/feature-icon.svg | 10 + .../description/assets/icons/feature.png | Bin 0 -> 4091 bytes .../static/description/assets/icons/gear.svg | 10 + .../static/description/assets/icons/hero.gif | Bin 0 -> 756228 bytes .../description/assets/icons/hire-odoo.svg | 12 + .../description/assets/icons/hotel-black.png | Bin 0 -> 911 bytes .../description/assets/icons/license.png | Bin 0 -> 1095 bytes .../assets/icons/life-ring-icon.svg | 13 + .../description/assets/icons/lifebuoy.png | Bin 0 -> 1199 bytes .../static/description/assets/icons/mail.svg | 3 + .../assets/icons/manufacturing-black.png | Bin 0 -> 673 bytes .../description/assets/icons/mouse-cursor.svg | 1 + .../static/description/assets/icons/notes.png | Bin 0 -> 2087 bytes .../assets/icons/notification icon.svg | 10 + .../assets/icons/odoo-consultancy.svg | 4 + .../assets/icons/odoo-licencing.svg | 3 + .../description/assets/icons/odoo-logo.png | Bin 0 -> 9192 bytes .../description/assets/icons/password.svg | 3 + .../description/assets/icons/patter.svg | 9 + .../description/assets/icons/pattern1.png | Bin 0 -> 7183 bytes .../description/assets/icons/pos-black.png | Bin 0 -> 878 bytes .../assets/icons/puzzle-piece-icon.svg | 10 + .../description/assets/icons/puzzle.png | Bin 0 -> 653 bytes .../description/assets/icons/replace-icon.svg | 10 + .../assets/icons/restaurant-black.png | Bin 0 -> 905 bytes .../assets/icons/screenshot-main.png | Bin 0 -> 193286 bytes .../description/assets/icons/screenshot.png | Bin 0 -> 4413 bytes .../assets/icons/service-black.png | Bin 0 -> 839 bytes .../description/assets/icons/skype-fill.svg | 10 + .../static/description/assets/icons/skype.png | Bin 0 -> 6065 bytes .../static/description/assets/icons/skype.svg | 3 + .../description/assets/icons/star-1.svg | 53 + .../description/assets/icons/star-2.svg | 9 + .../description/assets/icons/support.png | Bin 0 -> 3892 bytes .../assets/icons/test-1 - Copy.png | Bin 0 -> 23639 bytes .../description/assets/icons/test-1.png | Bin 0 -> 1996 bytes .../description/assets/icons/test-2.png | Bin 0 -> 2390 bytes .../assets/icons/trading-black.png | Bin 0 -> 427 bytes .../description/assets/icons/training.png | Bin 0 -> 627 bytes .../description/assets/icons/translate.svg | 10 + .../description/assets/icons/update.png | Bin 0 -> 1225 bytes .../static/description/assets/icons/user.png | Bin 0 -> 988 bytes .../static/description/assets/icons/user.svg | 3 + .../static/description/assets/icons/video.png | Bin 0 -> 3837 bytes .../description/assets/icons/whatsapp.svg | 14 + .../description/assets/icons/wrench-icon.svg | 10 + .../description/assets/icons/wrench.png | Bin 0 -> 1205 bytes .../description/assets/icons/youtube-icon.png | Bin 0 -> 619 bytes .../static/description/assets/modules/1.gif | Bin 0 -> 775231 bytes .../static/description/assets/modules/2.jpg | Bin 0 -> 141363 bytes .../static/description/assets/modules/3.jpg | Bin 0 -> 777844 bytes .../static/description/assets/modules/4.png | Bin 0 -> 94262 bytes .../static/description/assets/modules/5.jpg | Bin 0 -> 713809 bytes .../static/description/assets/modules/6.gif | Bin 0 -> 1155290 bytes .../description/assets/screenshots/001.png | Bin 0 -> 61088 bytes .../description/assets/screenshots/0010.png | Bin 0 -> 55761 bytes .../description/assets/screenshots/0011.png | Bin 0 -> 19862 bytes .../description/assets/screenshots/0012.png | Bin 0 -> 129962 bytes .../description/assets/screenshots/002.png | Bin 0 -> 84712 bytes .../description/assets/screenshots/003.png | Bin 0 -> 45908 bytes .../description/assets/screenshots/004.png | Bin 0 -> 42522 bytes .../description/assets/screenshots/005.png | Bin 0 -> 48970 bytes .../description/assets/screenshots/006.png | Bin 0 -> 143824 bytes .../description/assets/screenshots/008.png | Bin 0 -> 77451 bytes .../description/assets/screenshots/009.png | Bin 0 -> 132328 bytes .../description/assets/screenshots/1.png | Bin 0 -> 113353 bytes .../description/assets/screenshots/10.png | Bin 0 -> 121556 bytes .../description/assets/screenshots/19.png | Bin 0 -> 31330 bytes .../description/assets/screenshots/2.png | Bin 0 -> 100707 bytes .../description/assets/screenshots/3.png | Bin 0 -> 129945 bytes .../description/assets/screenshots/4.png | Bin 0 -> 96871 bytes .../description/assets/screenshots/5.png | Bin 0 -> 110701 bytes .../description/assets/screenshots/6.png | Bin 0 -> 126338 bytes .../description/assets/screenshots/7.png | Bin 0 -> 56952 bytes .../description/assets/screenshots/8.png | Bin 0 -> 103346 bytes .../description/assets/screenshots/9.png | Bin 0 -> 64753 bytes .../description/assets/screenshots/aged.png | Bin 0 -> 37847 bytes .../assets/screenshots/bank_statements.png | Bin 0 -> 46705 bytes .../assets/screenshots/customer_statement.png | Bin 0 -> 116396 bytes .../screenshots/customer_statement_excel.png | Bin 0 -> 47758 bytes .../screenshots/customer_statement_pdf.png | Bin 0 -> 37196 bytes .../description/assets/screenshots/hero.gif | Bin 0 -> 711811 bytes .../assets/screenshots/hero_old.gif | Bin 0 -> 328295 bytes .../assets/screenshots/import_button.png | Bin 0 -> 340819 bytes .../assets/screenshots/import_wizard.png | Bin 0 -> 250995 bytes .../description/assets/screenshots/loc3.png | Bin 0 -> 143228 bytes .../description/assets/screenshots/loc_1.png | Bin 0 -> 77672 bytes .../description/assets/screenshots/loc_2.png | Bin 0 -> 71189 bytes .../description/assets/screenshots/rec_1.png | Bin 0 -> 70238 bytes .../description/assets/screenshots/rec_2.png | Bin 0 -> 89867 bytes .../description/assets/screenshots/rec_3.png | Bin 0 -> 227283 bytes .../assets/screenshots/statement.csv | 3 + .../assets/screenshots/statement.ofx | 65 + .../assets/screenshots/statement.qif | 15 + .../assets/screenshots/statement.xlsx | Bin 0 -> 4985 bytes .../static/description/banner.jpg | Bin 0 -> 785079 bytes .../static/description/icon.png | Bin 0 -> 13537 bytes .../static/description/index.html | 2223 +++++++++ .../static/src/js/KanbanController.js | 129 + .../static/src/js/ListController.js | 168 + .../static/src/js/action_manager.js | 16 + .../js/bank_reconcile_form_lines_widget.js | 79 + .../src/js/bank_reconcile_form_list_widget.js | 124 + .../static/src/scss/bank_rec_widget.css | 7 + .../static/src/scss/style.scss | 1277 +++++ .../static/src/xml/bank_rec_widget.xml | 33 + .../static/src/xml/bank_reconcile_widget.xml | 124 + .../views/account_asset_asset_views.xml | 231 + .../views/account_asset_category_views.xml | 146 + .../account_bank_statement_line_views.xml | 290 ++ .../views/account_bank_statement_views.xml | 34 + .../views/account_configuration.xml | 16 + .../views/account_followup.xml | 88 + .../views/account_group.xml | 51 + .../views/account_journal_views.xml | 33 + .../views/account_move_line_views.xml | 43 + .../views/account_move_views.xml | 34 + .../views/account_payment_view.xml | 87 + .../views/account_recurring_payments_view.xml | 95 + .../views/accounting_menu.xml | 17 + .../views/credit_limit_view.xml | 45 + .../views/followup_line_views.xml | 28 + .../views/followup_report.xml | 120 + .../views/multiple_invoice_form.xml | 33 + .../views/multiple_invoice_layout_view.xml | 42 + .../views/product_template_views.xml | 17 + .../views/product_views.xml | 17 + .../views/reports_config_view.xml | 82 + .../views/res_config_settings_views.xml | 23 + .../views/res_partner_views.xml | 93 + .../base_accounting_kit/wizard/__init__.py | 37 + .../wizard/account_aged_trial_balance.py | 77 + .../account_aged_trial_balance_views.xml | 39 + .../wizard/account_balance_report.py | 57 + .../wizard/account_balance_report_views.xml | 32 + .../wizard/account_bank_book_report.py | 112 + .../wizard/account_bank_book_report_views.xml | 42 + .../wizard/account_cash_book_report.py | 110 + .../wizard/account_cash_book_report_views.xml | 42 + .../wizard/account_common_partner_report.py | 96 + .../wizard/account_day_book_report.py | 76 + .../wizard/account_day_book_report_views.xml | 39 + .../wizard/account_lock_date.py | 64 + .../wizard/account_lock_date_views.xml | 46 + .../wizard/account_print_journal.py | 55 + .../wizard/account_print_journal_views.xml | 32 + .../wizard/account_report_general_ledger.py | 65 + .../account_report_general_ledger_views.xml | 36 + .../wizard/account_report_partner_ledger.py | 52 + .../account_report_partner_ledger_views.xml | 32 + .../wizard/asset_depreciation_confirmation.py | 50 + .../asset_depreciation_confirmation_views.xml | 44 + .../wizard/asset_modify.py | 101 + .../wizard/asset_modify_views.xml | 39 + .../wizard/cash_flow_report.py | 128 + .../wizard/cash_flow_report_views.xml | 54 + .../wizard/financial_report.py | 438 ++ .../wizard/financial_report_views.xml | 60 + .../wizard/import_bank_statement.py | 326 ++ .../wizard/import_bank_statement_views.xml | 41 + .../wizard/kit_account_tax_report.py | 84 + .../wizard/kit_account_tax_report_views.xml | 30 + .../ica_web_responsive/__init__.py | 0 .../ica_web_responsive/__manifest__.py | 76 + .../static/description/icon.png | Bin 0 -> 55818 bytes .../static/description/img.png | Bin 0 -> 428622 bytes .../static/img/automation.svg | 25 + .../static/img/background-dark.jpg | Bin 0 -> 8745 bytes .../static/img/background-light.svg | 35 + .../static/src/@types/main.d.ts | 3 + .../src/core/colorlist/colorlist.dark.scss | 8 + .../src/core/dropdown/dropdown.dark.scss | 8 + .../static/src/core/notebook/notebook.scss | 12 + .../static/src/core/popover/popover.dark.scss | 15 + .../src/core/tags_list/tags_list.dark.scss | 13 + .../ica_web_responsive/static/src/main.js | 11 + .../src/scss/bootstrap_overridden.dark.scss | 180 + .../static/src/scss/bootstrap_overridden.scss | 136 + .../scss/bs_functions_overridden.dark.scss | 14 + .../src/scss/primary_variables.dark.scss | 193 + .../static/src/scss/primary_variables.scss | 107 + .../src/scss/secondary_variables.dark.scss | 19 + .../static/src/scss/secondary_variables.scss | 4 + .../search/search_bar/search_bar.dark.scss | 7 + .../search/search_panel/search_view.dark.scss | 12 + .../dashboard/dashboard_controller.dark.scss | 10 + .../views/fields/image/image_field.dark.scss | 7 + .../properties/properties_field.dark.scss | 19 + .../form/button_box/button_box.dark.scss | 4 + .../views/gantt/web_gantt.variables.dark.scss | 9 + .../views/kanban/kanban_controller.dark.scss | 11 + .../src/views/kanban/kanban_header_patch.js | 44 + .../static/src/views/kanban/kanban_view.scss | 14 + .../src/views/list/list_controller.dark.scss | 4 + .../src/views/list/list_controller.scss | 3 + .../src/views/list/list_renderer_desktop.js | 100 + .../src/views/list/list_renderer_desktop.xml | 16 + .../static/src/views/pivot/pivot_renderer.js | 31 + .../src/views/pivot/pivot_renderer.scss | 27 + .../static/src/views/pivot/pivot_renderer.xml | 10 + .../src/webclient/burger_menu/burger_menu.js | 21 + .../burger_menu.variables.dark.scss | 6 + .../color_scheme/color_scheme_menu_items.js | 19 + .../color_scheme/color_scheme_service.js | 27 + .../webclient/home_menu/home_menu.dark.scss | 16 + .../src/webclient/home_menu/home_menu.js | 375 ++ .../src/webclient/home_menu/home_menu.scss | 140 + .../home_menu/home_menu.variables.dark.scss | 6 + .../home_menu/home_menu.variables.scss | 9 + .../src/webclient/home_menu/home_menu.xml | 51 + .../home_menu/home_menu_background.dark.scss | 8 + .../home_menu/home_menu_background.scss | 9 + .../webclient/home_menu/home_menu_service.js | 96 + .../src/webclient/navbar/navbar.dark.scss | 14 + .../static/src/webclient/navbar/navbar.js | 77 + .../static/src/webclient/navbar/navbar.scss | 22 + .../navbar/navbar.variables.dark.scss | 6 + .../webclient/navbar/navbar.variables.scss | 25 + .../static/src/webclient/navbar/navbar.xml | 54 + .../promote_studio_dialog.js | 56 + .../promote_studio_dialog.xml | 59 + .../src/webclient/share_url/burger_menu.js | 16 + .../src/webclient/share_url/burger_menu.xml | 13 + .../src/webclient/share_url/share_url.js | 42 + .../static/src/webclient/webclient.js | 19 + .../views/webclient_templates.xml | 15 + 472 files changed, 58682 insertions(+) create mode 100644 demo_addons_modules/aui_custom_dashboards/__init__.py create mode 100644 demo_addons_modules/aui_custom_dashboards/__manifest__.py create mode 100644 demo_addons_modules/aui_custom_dashboards/controllers/__init__.py create mode 100644 demo_addons_modules/aui_custom_dashboards/controllers/dashboards.py create mode 100644 demo_addons_modules/aui_custom_dashboards/static/lib/apexcharts/apexcharts.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/lib/apexcharts/apexcharts.min.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/charts/chart_base.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.xml create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.xml create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.xml create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.xml create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/work_order_analysis.xml create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.js create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.xml create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/scss/aui_dashboard.scss create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/scss/dashboard.scss create mode 100644 demo_addons_modules/aui_custom_dashboards/static/src/xml/dashboard.xml create mode 100644 demo_addons_modules/aui_custom_dashboards/views/view.xml create mode 100644 demo_addons_modules/aui_custom_module/__init__.py create mode 100644 demo_addons_modules/aui_custom_module/__manifest__.py create mode 100644 demo_addons_modules/aui_custom_module/data/data.xml create mode 100644 demo_addons_modules/aui_custom_module/models/__init__.py create mode 100644 demo_addons_modules/aui_custom_module/models/purchase_order.py create mode 100644 demo_addons_modules/aui_custom_module/models/sale.py create mode 100644 demo_addons_modules/aui_custom_module/models/stock.py create mode 100644 demo_addons_modules/aui_custom_module/models/work_order.py create mode 100644 demo_addons_modules/aui_custom_module/models/work_order_inward.py create mode 100644 demo_addons_modules/aui_custom_module/security/ir.model.access.csv create mode 100644 demo_addons_modules/aui_custom_module/static/description/icon.jpg create mode 100644 demo_addons_modules/aui_custom_module/static/description/icon.png create mode 100644 demo_addons_modules/aui_custom_module/views/aui_business.xml create mode 100644 demo_addons_modules/aui_custom_module/views/purchase_order.xml create mode 100644 demo_addons_modules/aui_custom_module/views/sale.xml create mode 100644 demo_addons_modules/aui_custom_module/views/stock.xml create mode 100644 demo_addons_modules/aui_custom_module/views/work_order_inward_view.xml create mode 100644 demo_addons_modules/aui_custom_module/views/work_order_view.xml create mode 100644 demo_addons_modules/base_account_budget/README.rst create mode 100644 demo_addons_modules/base_account_budget/__init__.py create mode 100644 demo_addons_modules/base_account_budget/__manifest__.py create mode 100644 demo_addons_modules/base_account_budget/doc/RELEASE_NOTES.md create mode 100644 demo_addons_modules/base_account_budget/i18n/zh_CN.po create mode 100644 demo_addons_modules/base_account_budget/models/__init__.py create mode 100644 demo_addons_modules/base_account_budget/models/account_analytic_account.py create mode 100644 demo_addons_modules/base_account_budget/models/account_budget.py create mode 100644 demo_addons_modules/base_account_budget/security/account_budget_security.xml create mode 100644 demo_addons_modules/base_account_budget/security/ir.model.access.csv create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/arrows-repeat.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-1.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-2.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-bg.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-bg.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-call.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-mail.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-pattern.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/banner-promo.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/brand-pair.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/check.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/chevron.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/close-icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/cogs.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/collabarate-icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/consultation.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/cybro-logo.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/down.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/ecom-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/education-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/faq.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/feature-icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/feature.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/gear.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/hero.gif create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/hire-odoo.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/hotel-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/license.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/life-ring-icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/lifebuoy.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/mail.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/manufacturing-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/notes.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/notification icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/odoo-consultancy.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/odoo-licencing.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/odoo-logo.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/patter.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/pattern1.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/pos-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/puzzle-piece-icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/puzzle.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/replace-icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/restaurant-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/screenshot-main.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/screenshot.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/service-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/skype-fill.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/skype.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/skype.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/star-1.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/star-2.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/support.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/test-1 - Copy.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/test-1.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/test-2.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/trading-black.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/training.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/translate.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/update.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/user.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/video.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/whatsapp.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/wrench-icon.svg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/icons/wrench.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/modules/1.jpg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/modules/2.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/modules/3.jpg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/modules/4.jpg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/modules/5.jpg create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/screenshots/1.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/screenshots/2.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/screenshots/3.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/screenshots/4.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/screenshots/5.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/screenshots/6.png create mode 100644 demo_addons_modules/base_account_budget/static/description/assets/screenshots/hero.gif create mode 100644 demo_addons_modules/base_account_budget/static/description/banner.png create mode 100644 demo_addons_modules/base_account_budget/static/description/icon.png create mode 100644 demo_addons_modules/base_account_budget/static/description/index.html create mode 100644 demo_addons_modules/base_account_budget/views/account_analytic_account_views.xml create mode 100644 demo_addons_modules/base_account_budget/views/account_budget_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/README.rst create mode 100644 demo_addons_modules/base_accounting_kit/__init__.py create mode 100644 demo_addons_modules/base_accounting_kit/__manifest__.py create mode 100644 demo_addons_modules/base_accounting_kit/controllers/__init__.py create mode 100644 demo_addons_modules/base_accounting_kit/controllers/statement_report.py create mode 100644 demo_addons_modules/base_accounting_kit/data/account_financial_report_data.xml create mode 100644 demo_addons_modules/base_accounting_kit/data/account_pdc_data.xml create mode 100644 demo_addons_modules/base_accounting_kit/data/cash_flow_data.xml create mode 100644 demo_addons_modules/base_accounting_kit/data/followup_levels.xml create mode 100644 demo_addons_modules/base_accounting_kit/data/multiple_invoice_data.xml create mode 100644 demo_addons_modules/base_accounting_kit/data/recurring_entry_cron.xml create mode 100644 demo_addons_modules/base_accounting_kit/doc/RELEASE_NOTES.md create mode 100644 demo_addons_modules/base_accounting_kit/i18n/ar_001.po create mode 100644 demo_addons_modules/base_accounting_kit/i18n/de_CH.po create mode 100644 demo_addons_modules/base_accounting_kit/i18n/es_AR.po create mode 100644 demo_addons_modules/base_accounting_kit/i18n/fr_BE.po create mode 100644 demo_addons_modules/base_accounting_kit/i18n/uk_UA.po create mode 100644 demo_addons_modules/base_accounting_kit/i18n/zh_CN.po create mode 100644 demo_addons_modules/base_accounting_kit/i18n/zh_HK.po create mode 100644 demo_addons_modules/base_accounting_kit/models/__init__.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_account.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_asset_asset.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_asset_category.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_asset_depreciation_line.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_bank_statement_line.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_followup.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_journal.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_move.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_move_line.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_payment.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_payment_method.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_recurring_entries_line.py create mode 100644 demo_addons_modules/base_accounting_kit/models/account_report.py create mode 100644 demo_addons_modules/base_accounting_kit/models/followup_line.py create mode 100644 demo_addons_modules/base_accounting_kit/models/multiple_invoice.py create mode 100644 demo_addons_modules/base_accounting_kit/models/multiple_invoice_layout.py create mode 100644 demo_addons_modules/base_accounting_kit/models/product_template.py create mode 100644 demo_addons_modules/base_accounting_kit/models/recurring_payments.py create mode 100644 demo_addons_modules/base_accounting_kit/models/res_company.py create mode 100644 demo_addons_modules/base_accounting_kit/models/res_config_settings.py create mode 100644 demo_addons_modules/base_accounting_kit/models/res_partner.py create mode 100644 demo_addons_modules/base_accounting_kit/models/sale_order.py create mode 100644 demo_addons_modules/base_accounting_kit/report/__init__.py create mode 100644 demo_addons_modules/base_accounting_kit/report/account_asset_report.py create mode 100644 demo_addons_modules/base_accounting_kit/report/account_asset_report_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/account_bank_book.py create mode 100644 demo_addons_modules/base_accounting_kit/report/account_bank_book_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/account_cash_book.py create mode 100644 demo_addons_modules/base_accounting_kit/report/account_cash_book_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/account_day_book.py create mode 100644 demo_addons_modules/base_accounting_kit/report/account_day_book_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/account_report_common_account.py create mode 100644 demo_addons_modules/base_accounting_kit/report/cash_flow_report.py create mode 100644 demo_addons_modules/base_accounting_kit/report/cash_flow_report_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/general_ledger_report.py create mode 100644 demo_addons_modules/base_accounting_kit/report/general_ledger_report_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/multiple_invoice_layouts.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/multiple_invoice_report.py create mode 100644 demo_addons_modules/base_accounting_kit/report/multiple_invoice_report_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/report.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/report_aged_partner.py create mode 100644 demo_addons_modules/base_accounting_kit/report/report_aged_partner_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/report_financial.py create mode 100644 demo_addons_modules/base_accounting_kit/report/report_financial_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/report_journal_audit.py create mode 100644 demo_addons_modules/base_accounting_kit/report/report_journal_audit_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/report_partner_ledger.py create mode 100644 demo_addons_modules/base_accounting_kit/report/report_partner_ledger_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/report_tax.py create mode 100644 demo_addons_modules/base_accounting_kit/report/report_tax_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/report_trial_balance.py create mode 100644 demo_addons_modules/base_accounting_kit/report/report_trial_balance_template.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/res_partner_reports.xml create mode 100644 demo_addons_modules/base_accounting_kit/report/res_partner_templates.xml create mode 100644 demo_addons_modules/base_accounting_kit/security/ir.model.access.csv create mode 100644 demo_addons_modules/base_accounting_kit/security/security.xml create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit1.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit10.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit11.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit2.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit3.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit4.jpg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit5.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit6.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit7.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit8.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/accounting_kit9.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/ajmaljk.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/arrows-repeat.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-1.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-2.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-bg.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-bg.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-call.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-mail.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-pattern.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/banner-promo.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/blog-icon.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/blog-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/brand-pair.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/check.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/chevron.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/close-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/cogs.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/collabarate-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/consultation.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/copy-clip.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/copylink.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/cybro-logo.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/down.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/ecom-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/education-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/external-link-line.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/faq.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/feature-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/feature.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/gear.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/hero.gif create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/hire-odoo.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/hotel-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/license.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/life-ring-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/lifebuoy.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/mail.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/manufacturing-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/mouse-cursor.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/notes.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/notification icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/odoo-consultancy.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/odoo-licencing.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/odoo-logo.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/password.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/patter.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/pattern1.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/pos-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/puzzle-piece-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/puzzle.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/replace-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/restaurant-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/screenshot-main.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/screenshot.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/service-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/skype-fill.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/skype.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/skype.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/star-1.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/star-2.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/support.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/test-1 - Copy.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/test-1.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/test-2.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/trading-black.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/training.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/translate.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/update.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/user.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/user.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/video.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/whatsapp.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/wrench-icon.svg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/wrench.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/icons/youtube-icon.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/modules/1.gif create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/modules/2.jpg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/modules/3.jpg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/modules/4.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/modules/5.jpg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/modules/6.gif create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/001.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/0010.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/0011.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/0012.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/002.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/003.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/004.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/005.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/006.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/008.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/009.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/1.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/10.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/19.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/2.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/3.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/4.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/5.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/6.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/7.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/8.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/9.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/aged.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/bank_statements.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/customer_statement.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/customer_statement_excel.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/customer_statement_pdf.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/hero.gif create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/hero_old.gif create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/import_button.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/import_wizard.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/loc3.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/loc_1.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/loc_2.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/rec_1.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/rec_2.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/rec_3.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/statement.csv create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/statement.ofx create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/statement.qif create mode 100644 demo_addons_modules/base_accounting_kit/static/description/assets/screenshots/statement.xlsx create mode 100644 demo_addons_modules/base_accounting_kit/static/description/banner.jpg create mode 100644 demo_addons_modules/base_accounting_kit/static/description/icon.png create mode 100644 demo_addons_modules/base_accounting_kit/static/description/index.html create mode 100644 demo_addons_modules/base_accounting_kit/static/src/js/KanbanController.js create mode 100644 demo_addons_modules/base_accounting_kit/static/src/js/ListController.js create mode 100644 demo_addons_modules/base_accounting_kit/static/src/js/action_manager.js create mode 100644 demo_addons_modules/base_accounting_kit/static/src/js/bank_reconcile_form_lines_widget.js create mode 100644 demo_addons_modules/base_accounting_kit/static/src/js/bank_reconcile_form_list_widget.js create mode 100644 demo_addons_modules/base_accounting_kit/static/src/scss/bank_rec_widget.css create mode 100644 demo_addons_modules/base_accounting_kit/static/src/scss/style.scss create mode 100644 demo_addons_modules/base_accounting_kit/static/src/xml/bank_rec_widget.xml create mode 100644 demo_addons_modules/base_accounting_kit/static/src/xml/bank_reconcile_widget.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_asset_asset_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_asset_category_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_bank_statement_line_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_bank_statement_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_configuration.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_followup.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_group.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_journal_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_move_line_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_move_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_payment_view.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/account_recurring_payments_view.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/accounting_menu.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/credit_limit_view.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/followup_line_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/followup_report.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/multiple_invoice_form.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/multiple_invoice_layout_view.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/product_template_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/product_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/reports_config_view.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/res_config_settings_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/views/res_partner_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/__init__.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_balance_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_balance_report_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_common_partner_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_day_book_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_day_book_report_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_lock_date.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_lock_date_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_print_journal.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_print_journal_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/asset_modify.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/asset_modify_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/cash_flow_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/cash_flow_report_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/financial_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/financial_report_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/import_bank_statement.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/import_bank_statement_views.xml create mode 100644 demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report.py create mode 100644 demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report_views.xml create mode 100644 demo_addons_modules/ica_web_responsive/__init__.py create mode 100644 demo_addons_modules/ica_web_responsive/__manifest__.py create mode 100644 demo_addons_modules/ica_web_responsive/static/description/icon.png create mode 100644 demo_addons_modules/ica_web_responsive/static/description/img.png create mode 100755 demo_addons_modules/ica_web_responsive/static/img/automation.svg create mode 100644 demo_addons_modules/ica_web_responsive/static/img/background-dark.jpg create mode 100644 demo_addons_modules/ica_web_responsive/static/img/background-light.svg create mode 100644 demo_addons_modules/ica_web_responsive/static/src/@types/main.d.ts create mode 100644 demo_addons_modules/ica_web_responsive/static/src/core/colorlist/colorlist.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/core/dropdown/dropdown.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/core/notebook/notebook.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/core/popover/popover.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/core/tags_list/tags_list.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/main.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/scss/bs_functions_overridden.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/search/search_bar/search_bar.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/search/search_panel/search_view.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/dashboard/dashboard_controller.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/fields/image/image_field.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/fields/properties/properties_field.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/form/button_box/button_box.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/gantt/web_gantt.variables.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_controller.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_header_patch.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_view.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.xml create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/pivot/pivot_renderer.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/pivot/pivot_renderer.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/views/pivot/pivot_renderer.xml create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/burger_menu/burger_menu.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/burger_menu/burger_menu.variables.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/color_scheme/color_scheme_menu_items.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/color_scheme/color_scheme_service.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu.variables.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu.variables.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu.xml create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu_background.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu_background.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/home_menu/home_menu_service.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/navbar/navbar.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/navbar/navbar.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/navbar/navbar.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/navbar/navbar.variables.dark.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/navbar/navbar.variables.scss create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/navbar/navbar.xml create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/promote_studio_dialog/promote_studio_dialog.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/promote_studio_dialog/promote_studio_dialog.xml create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/share_url/burger_menu.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/share_url/burger_menu.xml create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/share_url/share_url.js create mode 100644 demo_addons_modules/ica_web_responsive/static/src/webclient/webclient.js create mode 100644 demo_addons_modules/ica_web_responsive/views/webclient_templates.xml diff --git a/demo_addons_modules/aui_custom_dashboards/__init__.py b/demo_addons_modules/aui_custom_dashboards/__init__.py new file mode 100644 index 000000000..a03bfd097 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/__init__.py @@ -0,0 +1 @@ +from . import controllers \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/__manifest__.py b/demo_addons_modules/aui_custom_dashboards/__manifest__.py new file mode 100644 index 000000000..9cbfe8791 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/__manifest__.py @@ -0,0 +1,47 @@ +{ + "name": "AUI Custom Dashboards", + "version": "1.0", + "category": "Dashboard", + "summary": "Custom OWL dashboards", + "depends": [ + "web", + "aui_custom_module" + ], + "data": [ + "views/view.xml", + ], + "assets": { + "web.assets_backend": [ + "aui_custom_dashboards/static/src/scss/aui_dashboard.scss", + 'https://cdn.jsdelivr.net/npm/apexcharts@3.35.0/dist/apexcharts.min.js', + 'https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js', + 'aui_custom_dashboards/static/lib/apexcharts/*.js', + + # ====================== + # CHART BASE + # ====================== + "aui_custom_dashboards/static/src/components/charts/chart_base.js", + "aui_custom_dashboards/static/src/components/charts/**/*.js", + + "aui_custom_dashboards/static/src/components/charts/**/*.xml", + + # ====================== + # TABS + # ====================== + "aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.js", + "aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.xml", + "aui_custom_dashboards/static/src/components/tabs/overview/work_order_analysis.xml", + + "aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.js", + "aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.xml", + + # ====================== + # DASHBOARD + # ====================== + "aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.js", + "aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.xml", + ], + }, + "installable": True, + "application": True, +} diff --git a/demo_addons_modules/aui_custom_dashboards/controllers/__init__.py b/demo_addons_modules/aui_custom_dashboards/controllers/__init__.py new file mode 100644 index 000000000..a9fa2c295 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/controllers/__init__.py @@ -0,0 +1 @@ +from . import dashboards \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/controllers/dashboards.py b/demo_addons_modules/aui_custom_dashboards/controllers/dashboards.py new file mode 100644 index 000000000..f09675197 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/controllers/dashboards.py @@ -0,0 +1,724 @@ +from odoo import http +from odoo.http import request + +class AUIDashboardController(http.Controller): + + @http.route("/aui/dashboard/overview", type="json", auth="user") + def get_overview_data(self): + env = request.env + + # ------------------------------------------------- + # BASIC COUNTS + # ------------------------------------------------- + sales_count = env["sale.order"].search_count([]) + purchase_count = env["purchase.order"].search_count([]) + inventory_count = env["stock.quant"].search_count([]) + work_orders_count = env["mrp.production"].search_count([]) + landed_cost_count = env["stock.landed.cost"].search_count([ + ("state", "=", "done") + ]) + + # ------------------------------------------------- + # SALES & PURCHASE AMOUNTS + # ------------------------------------------------- + sales_orders = env["sale.order"].search([ + ("state", "in", ["sale", "done"]) + ]) + sales_amount = sum(sales_orders.mapped("amount_total")) + + purchase_orders = env["purchase.order"].search([ + ("state", "in", ["purchase", "done"]) + ]) + purchase_amount = sum(purchase_orders.mapped("amount_total")) + + # ------------------------------------------------- + # LANDED COST TOTAL + # ------------------------------------------------- + landed_costs = env["stock.landed.cost"].search([ + ("state", "=", "done") + ]) + additional_exp_amount = sum(landed_costs.mapped("amount_total")) + + # ------------------------------------------------- + # LANDED COST LINES → DONUT DATA + # ------------------------------------------------- + expense_map = {} + + landed_cost_lines = env["stock.landed.cost.lines"].search([ + ("cost_id.state", "=", "done") + ]) + + for line in landed_cost_lines: + product_name = line.product_id.display_name if line.product_id else "Other" + expense_map[product_name] = ( + expense_map.get(product_name, 0.0) + + (line.price_unit or 0.0) + ) + + additional_expenses = { + "labels": list(expense_map.keys()), + "series": list(expense_map.values()), + "total": sum(expense_map.values()), + "count": len(landed_cost_lines), + } + + # ------------------------------------------------- + # COST OF GOODS SOLD (RAW MATERIAL COST) + # ------------------------------------------------- + # stock_moves = env["stock.move"].search([ + # ("state", "=", "done"), + # ("sale_line_id", "!=", False), + # ("product_id.valuation", "!=", "manual_periodic"), + # ]) + + # stock.move.value is NEGATIVE for outgoing moves + # raw_material_cost = abs(sum(stock_moves.mapped("value"))) + + # ------------------------------------------------- + # MANUFACTURING COST (OPTIONAL / CUSTOM) + # ------------------------------------------------- + manufacturing_cost = 0.0 + productions = env["mrp.production"].search([ + ("state", "=", "done") + ]) + + # If you have custom cost field + if "extra_cost" in productions._fields: + manufacturing_cost = sum(productions.mapped("extra_cost")) + + # ------------------------------------------------- + # PROFIT CALCULATION + # ------------------------------------------------- + total_cost = ( + manufacturing_cost + + additional_exp_amount + ) + + profit = sales_amount - total_cost + + # ------------------------------------------------- + # FINAL RESPONSE + # ------------------------------------------------- + data = { + "sales": sales_count, + "purchase": purchase_count, + "inventory": inventory_count, + "workOrders": work_orders_count, + "landedCostCount": landed_cost_count, + + "sales_amount": sales_amount, + "purchase_amount": purchase_amount, + "additional_exp_amount": additional_exp_amount, + "manufacturing_cost": manufacturing_cost, + "total_cost": total_cost, + "profit": profit, + + "additional_expenses": additional_expenses, + } + + return data + + @http.route("/aui/dashboard/purchase_vendor_product_stacked", type="json", auth="user") + def get_purchase_vendor_product_stacked(self): + env = request.env + + po_lines = env["purchase.order.line"].search([ + ("order_id.state", "in", ["purchase", "done"]), + ]) + + # Structure: + # vendor_map = { + # "Vendor A": {"Product 1": 1000, "Product 2": 2000}, + # "Vendor B": {"Product 1": 1500} + # } + vendor_map = {} + products_set = set() + + for line in po_lines: + vendor = line.order_id.partner_id.name + product = line.product_id.display_name + amount = line.price_subtotal + + products_set.add(product) + + vendor_map.setdefault(vendor, {}) + vendor_map[vendor][product] = ( + vendor_map[vendor].get(product, 0.0) + amount + ) + + vendors = list(vendor_map.keys()) + products = list(products_set) + + # Build stacked series + series = [] + for product in products: + series.append({ + "name": product, + "data": [ + vendor_map[vendor].get(product, 0.0) + for vendor in vendors + ], + }) + + return { + "categories": vendors, + "series": series, + } + + @http.route("/aui/dashboard/work_order_status", type="json", auth="user") + def get_work_order_status(self): + env = request.env + + data = env["work.order"].read_group( + [], + ["id:count"], + ["state"] + ) + + labels = [] + series = [] + + for row in data: + labels.append(dict( + env["work.order"]._fields["state"].selection + ).get(row["state"])) + series.append(row["id"]) + + return { + "labels": labels, + "series": series, + } + + @http.route("/aui/dashboard/finished_goods_output", type="json", auth="user") + def get_finished_goods_output(self): + env = request.env + + data = env["work.order.inward"].read_group( + [("state", "=", "confirmed")], + ["quantity:sum"], + ["product_id"] + ) + + categories = [] + series = [{ + "name": "Produced Quantity", + "data": [] + }] + + for row in data: + categories.append(row["product_id"][1]) + series[0]["data"].append(row["quantity"]) + + print({"categories": categories, "series": series}) + + return { + "categories": categories, + "series": series, + } + + @http.route("/aui/dashboard/raw_material_consumption", type="json", auth="user") + def get_raw_material_consumption(self): + env = request.env + + data = env["work.order.inward.raw.line"].read_group( + [], + ["quantity:sum"], + ["product_id"] + ) + + labels = [] + series = [] + + for row in data: + labels.append(row["product_id"][1]) + series.append(row["quantity"]) + + return { + "labels": labels, + "series": series, + } + + @http.route("/aui/dashboard/work_order_material_flow", type="json", auth="user") + def get_work_order_material_flow(self): + env = request.env + + # Limit to latest 6 work orders (best for demo) + work_orders = env["work.order"].search( + [("state", "in", ["partial", "done"])], + order="create_date desc", + limit=6 + ) + + categories = [] + sent_qty = [] + used_qty = [] + scrap_qty = [] + finished_qty = [] + + for wo in work_orders: + categories.append(wo.name) + + # Raw material SENT (KG) + sent = sum(wo.line_ids.mapped("quantity")) + + # Raw material USED (KG) + used = sum( + env["work.order.inward.raw.line"] + .search([("inward_id.work_order_ids", "in", wo.id)]) + .mapped("quantity") + ) + + # Scrap / loss (KG) + scrap = sum( + env["work.order.inward"] + .search([("work_order_ids", "in", wo.id)]) + .mapped("difference") + ) + + # Finished goods (Units) + finished = sum( + env["work.order.inward"] + .search([("work_order_ids", "in", wo.id)]) + .mapped("quantity") + ) + + sent_qty.append(sent) + used_qty.append(used) + scrap_qty.append(abs(scrap)) + finished_qty.append(finished) + + print({ + "categories": categories, + "series": [ + { + "name": "Sent (KG)", + "type": "bar", + "data": sent_qty, + }, + { + "name": "Used (KG)", + "type": "bar", + "data": used_qty, + }, + { + "name": "Scrap (KG)", + "type": "bar", + "data": scrap_qty, + }, + { + "name": "Finished Units", + "type": "line", + "data": finished_qty, + }, + ], + }) + + return { + "categories": categories, + "series": [ + { + "name": "Sent (KG)", + "type": "bar", + "data": sent_qty, + }, + { + "name": "Used (KG)", + "type": "bar", + "data": used_qty, + }, + { + "name": "Scrap (KG)", + "type": "bar", + "data": scrap_qty, + }, + { + "name": "Finished Units", + "type": "line", + "data": finished_qty, + }, + ], + } + + # Add this to your dashboard controller + @http.route('/aui/dashboard/work_order_analysis', type='json', auth='user') + def get_work_order_analysis(self): + # Get work orders with inward data + work_orders = request.env['work.order'].search([ + ('state', 'not in', ['draft', 'confirmed']) + ], order='create_date desc', limit=20) + + # Group by subcontractor + subcontractor_data = {} + + for wo in work_orders: + subcontractor = wo.partner_id.name or 'Unknown' + + if subcontractor not in subcontractor_data: + subcontractor_data[subcontractor] = { + 'work_orders': [], + 'total_raw_used': 0, + 'total_fg_weight': 0, + 'total_fg_units': 0, + 'total_scrap': 0 + } + + # Get inward records for this work order + inward_ids = request.env['work.order.inward'].search([ + ('work_order_ids', 'in', [wo.id]), + ('state', 'not in', ['draft']) + ]) + + # Calculate totals + total_raw_sent = sum(wo.line_ids.mapped('quantity')) + total_raw_used = 0 + total_fg_weight = 0 + total_fg_units = 0 + total_scrap = 0 + + inward_details = [] + for inward in inward_ids: + # Raw material used + inward_raw_used = sum(inward.raw_line_ids.mapped('quantity')) + total_raw_used += inward_raw_used + + # Finished goods + if inward.fg_weight: + total_fg_weight += inward.fg_weight + total_fg_units += inward.quantity + + # Scrap + total_scrap += inward.difference or 0 + + # Store inward details for tooltip + inward_details.append({ + 'inward_name': inward.in_picking_id.display_name or f"Inward-{inward.id}", + 'raw_material_used': inward_raw_used, + 'fg_weight': inward.fg_weight or 0, + 'fg_units': inward.quantity, + 'scrap': inward.difference or 0, + 'product_name': inward.product_id.display_name if inward.product_id else 'N/A' + }) + + wo_data = { + 'work_order': wo.name, + 'raw_material_sent': total_raw_sent, + 'raw_material_used': total_raw_used, + 'finished_goods_weight': total_fg_weight, + 'finished_goods_units': total_fg_units, + 'scrap': total_scrap, + 'yield_percentage': (total_fg_weight / total_raw_used * 100) if total_raw_used > 0 else 0, + 'status': wo.state, + 'subcontractor': subcontractor, + 'inward_details': inward_details + } + + subcontractor_data[subcontractor]['work_orders'].append(wo_data) + + # Update subcontractor totals + subcontractor_data[subcontractor]['total_raw_used'] += total_raw_used + subcontractor_data[subcontractor]['total_fg_weight'] += total_fg_weight + subcontractor_data[subcontractor]['total_fg_units'] += total_fg_units + subcontractor_data[subcontractor]['total_scrap'] += total_scrap + + # Prepare series data for chart + series = [ + {'name': 'Raw Material Used (kg)', 'data': []}, + {'name': 'Finished Goods Weight (kg)', 'data': []}, + {'name': 'Scrap/Difference (kg)', 'data': []} + ] + + categories = [] + detailed_data = [] + + # Flatten data for chart - Group by subcontractor with work orders + for subcontractor, data in subcontractor_data.items(): + for wo_data in data['work_orders']: + # Create category name: "Vendor - WO001" + category_name = f"{subcontractor} - {wo_data['work_order']}" + categories.append(category_name) + + # Add data to series + series[0]['data'].append(wo_data['raw_material_used']) + series[1]['data'].append(wo_data['finished_goods_weight']) + series[2]['data'].append(wo_data['scrap']) + + # Store detailed data for tooltips + detailed_data.append({ + 'category': category_name, + 'work_order': wo_data['work_order'], + 'subcontractor': subcontractor, + 'raw_material_used': wo_data['raw_material_used'], + 'finished_goods_weight': wo_data['finished_goods_weight'], + 'finished_goods_units': wo_data['finished_goods_units'], + 'scrap': wo_data['scrap'], + 'yield_percentage': wo_data['yield_percentage'], + 'status': wo_data['status'], + 'inward_details': wo_data['inward_details'] + }) + + return { + 'series': series, + 'categories': categories, + 'detailed_data': detailed_data, + 'subcontractor_summary': [ + { + 'name': k, + 'total_raw_used': v['total_raw_used'], + 'total_fg_weight': v['total_fg_weight'], + 'total_fg_units': v['total_fg_units'], + 'total_scrap': v['total_scrap'], + 'work_order_count': len(v['work_orders']) + } + for k, v in subcontractor_data.items() + ] + } + + @http.route('/aui/dashboard/inventory_flow', type='json', auth='user') + def get_inventory_flow_data(self, category_ids=None, location_ids=None): + env = request.env + + # Build domain for stock moves + domain = [('state', '=', 'done'), ('product_qty', '>', 0)] + + if category_ids: + # Convert string IDs to integers if they come as strings + if isinstance(category_ids, str): + category_ids = [int(cat_id) for cat_id in category_ids.split(',')] + elif isinstance(category_ids, list): + category_ids = [int(cat_id) for cat_id in category_ids] + + domain.append(('product_id.categ_id', 'in', category_ids)) + + if location_ids: + # Convert string IDs to integers + if isinstance(location_ids, str): + location_ids = [int(loc_id) for loc_id in location_ids.split(',')] + elif isinstance(location_ids, list): + location_ids = [int(loc_id) for loc_id in location_ids] + + domain.append('|') + domain.append(('location_id', 'in', location_ids)) + domain.append(('location_dest_id', 'in', location_ids)) + + # Get recent stock moves (limit to 50 for performance) + moves = env['stock.move'].search(domain, limit=50, order='date desc') + + # Create nodes (unique locations) + nodes_set = set() + links = [] + + for move in moves: + if move.product_uom_qty <= 0: + continue + + source = move.location_id.complete_name or 'Unknown Source' + target = move.location_dest_id.complete_name or 'Unknown Destination' + + # Add to nodes set + nodes_set.add(source) + nodes_set.add(target) + + # Create link + links.append({ + 'source': source, + 'target': target, + 'value': float(move.product_uom_qty), + 'product': move.product_id.display_name if move.product_id else 'Unknown Product', + 'move_name': move.reference or move.name or 'Move', + 'date': move.date.strftime('%Y-%m-%d') if move.date else '', + 'uom': move.product_uom.name if move.product_uom else 'units' + }) + + # Convert nodes set to list + nodes = [{'name': node} for node in nodes_set] + + # Get available categories for filter + categories = env['product.category'].search_read([], ['id', 'name', 'complete_name']) + + # Get available locations for filter + locations = env['stock.location'].search_read([ + ('usage', 'in', ['internal', 'transit']), + ('company_id', '=', env.company.id) + ], ['id', 'complete_name']) + + return { + 'nodes': nodes, + 'links': links, + 'filters': { + 'categories': categories, + 'locations': locations + }, + 'total_moves': len(links), + 'total_quantity': sum(link['value'] for link in links) if links else 0 + } + + @http.route('/aui/dashboard/inventory_heatmap', type='json', auth='user') + def get_inventory_heatmap_data(self, category_ids=None, location_ids=None): + env = request.env + + domain = [ + ('location_id.usage', '=', 'internal'), + ('quantity', '>', 0), + ('company_id', '=', env.company.id), + ] + + if location_ids: + location_ids = [int(x) for x in location_ids.split(',')] if isinstance(location_ids, str) else location_ids + domain.append(('location_id', 'in', location_ids)) + + if category_ids: + category_ids = [int(x) for x in category_ids.split(',')] if isinstance(category_ids, str) else category_ids + domain.append(('product_id.categ_id', 'in', category_ids)) + + quants = env['stock.quant'].search(domain) + + # location → category → data + matrix = {} + all_locations = set() + all_categories = set() + + for q in quants: + location = q.location_id.complete_name + category = q.product_id.categ_id.name or 'Uncategorized' + + location = location.replace('WH/Stock', 'Main Warehouse') + location = location.replace('WO_', 'Work Order ') + location = location.replace('SO_', 'Sales Order ') + + all_locations.add(location) + all_categories.add(category) + + matrix.setdefault(location, {}) + matrix[location].setdefault(category, { + 'quantity': 0.0, + 'products': set(), + }) + + matrix[location][category]['quantity'] += q.quantity + matrix[location][category]['products'].add(q.product_id.id) + + # Find max qty for normalization + max_qty = max( + (cell['quantity'] for loc in matrix.values() for cell in loc.values()), + default=1 + ) + + heatmap_data = [] + + for location in all_locations: + for category in all_categories: + cell = matrix.get(location, {}).get(category, {'quantity': 0, 'products': set()}) + qty = cell['quantity'] + + heatmap_data.append({ + 'location': location, + 'category': category, + 'value': qty, + 'product_count': len(cell['products']), + 'intensity': round((qty / max_qty) * 100, 2), + }) + + return { + 'locations': list(all_locations) if all_locations else [], + 'categories': list(all_categories) if all_categories else [], + 'data': heatmap_data if heatmap_data else [], + 'total_quantity': sum(d['value'] for d in heatmap_data) if heatmap_data else 0, + } + + # @http.route('/aui/dashboard/inventory_heatmap', type='json', auth='user') + # def get_inventory_heatmap_data(self, category_ids=None, location_ids=None): + # env = request.env + # + # domain = [ + # ('location_id.usage', '=', 'internal'), + # ('quantity', '>', 0), + # ('company_id', '=', env.company.id) + # ] + # + # if location_ids: + # if isinstance(location_ids, str): + # location_ids = [int(loc_id) for loc_id in location_ids.split(',')] + # elif isinstance(location_ids, list): + # location_ids = [int(loc_id) for loc_id in location_ids] + # domain.append(('location_id', 'in', location_ids)) + # + # if category_ids: + # if isinstance(category_ids, str): + # category_ids = [int(cat_id) for cat_id in category_ids.split(',')] + # elif isinstance(category_ids, list): + # category_ids = [int(cat_id) for cat_id in category_ids] + # domain.append(('product_id.categ_id', 'in', category_ids)) + # + # # Get all stock quants + # quants = env['stock.quant'].search(domain) + # + # print(f"Found {len(quants)} stock quants") + # + # # Aggregate manually for better control + # aggregated_data = {} + # + # for quant in quants: + # if not quant.product_id or not quant.location_id: + # continue + # + # location_name = quant.location_id.complete_name + # category_name = quant.product_id.categ_id.name if quant.product_id.categ_id else 'Uncategorized' + # + # # Use full location path but clean it up + # location_name = location_name.replace('WH/Stock', 'Main Warehouse') + # location_name = location_name.replace('WO_', 'Work Order ') + # location_name = location_name.replace('SO_', 'Sales Order ') + # + # # Create a unique key for location-category combination + # key = f"{location_name}|{category_name}" + # + # if key in aggregated_data: + # aggregated_data[key]['value'] += quant.quantity + # aggregated_data[key]['product_count'] += 1 + # else: + # aggregated_data[key] = { + # 'location': location_name, + # 'category': category_name, + # 'value': quant.quantity, + # 'product_count': 1 + # } + # + # # Convert to list + # heatmap_data = list(aggregated_data.values()) + # + # # Get unique locations and categories + # unique_locations = sorted(set(item['location'] for item in heatmap_data)) + # unique_categories = sorted(set(item['category'] for item in heatmap_data)) + # + # # Get filter options + # category_list = env['product.category'].search_read([], ['id', 'name']) + # location_list = env['stock.location'].search_read([ + # ('usage', '=', 'internal'), + # ('company_id', '=', env.company.id) + # ], ['id', 'complete_name']) + # print({ + # 'locations': unique_locations, + # 'categories': unique_categories, + # 'data': heatmap_data, + # 'total_quantity': sum(item['value'] for item in heatmap_data), + # 'filters': { + # 'categories': category_list, + # 'locations': location_list + # } + # }) + # result = { + # 'locations': unique_locations, + # 'categories': unique_categories, + # 'data': heatmap_data, + # 'total_quantity': sum(item['value'] for item in heatmap_data), + # 'filters': { + # 'categories': category_list, + # 'locations': location_list + # } + # } + # + # print(f"Returning {len(heatmap_data)} data points") + # print(f"Unique locations: {unique_locations}") + # print(f"Unique categories: {unique_categories}") + # + # return result diff --git a/demo_addons_modules/aui_custom_dashboards/static/lib/apexcharts/apexcharts.js b/demo_addons_modules/aui_custom_dashboards/static/lib/apexcharts/apexcharts.js new file mode 100644 index 000000000..e09b5a4a5 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/lib/apexcharts/apexcharts.js @@ -0,0 +1,37 @@ +/*! + * ApexCharts v5.3.6 + * (c) 2018-2025 ApexCharts + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).ApexCharts=e()}(this,(function(){"use strict";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=Array(e);i=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(t){throw t},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,n=!0,o=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return n=t.done,t},e:function(t){o=!0,r=t},f:function(){try{n||null==i.return||i.return()}finally{if(o)throw r}}}}function n(t){var i=c();return function(){var a,s=l(t);if(i){var r=l(this).constructor;a=Reflect.construct(s,arguments,r)}else a=s.apply(this,arguments);return function(t,i){if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw new TypeError("Derived constructors may only return object or undefined");return e(t)}(this,a)}}function o(t,e,i){return(e=x(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&g(t,e)}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function u(t){for(var e=1;e>16,n=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-n)*s)+n)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(t){return t&&"object"===b(t)&&!Array.isArray(t)&&null!=t}},{key:"is",value:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;e1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if(null===t||"object"!==b(t))return t;if(i.has(t))return i.get(t);if(Array.isArray(t)){e=[],i.set(t,e);for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:2;return Number.isInteger(t)?t:parseFloat(t.toPrecision(e))}},{key:"randomId",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:"noExponents",value:function(t){return t.toString().includes("e")?Math.round(t):t}},{key:"elementExists",value:function(t){return!(!t||!t.isConnected)}},{key:"isInShadowDOM",value:function(e){if(!e||!e.getRootNode)return!1;var i=e.getRootNode();return i&&i!==document&&t.is("ShadowRoot",i)}},{key:"getShadowRootHost",value:function(e){return t.isInShadowDOM(e)&&e.getRootNode().host||null}},{key:"getDimensions",value:function(t){if(!t)return[0,0];var e,i=t.getRootNode&&t.getRootNode();if(i&&i!==document&&i.host){var a=i.host.getBoundingClientRect();return[a.width,a.height]}try{e=getComputedStyle(t,null)}catch(e){return[t.clientWidth||0,t.clientHeight||0]}var s=t.clientHeight,r=t.clientWidth;return s-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),[r-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),s]}},{key:"getBoundingClientRect",value:function(t){if(!t)return{top:0,right:0,bottom:0,left:0,width:0,height:0,x:0,y:0};var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:t.clientWidth,height:t.clientHeight,x:e.left,y:e.top}}},{key:"getLargestStringFromArr",value:function(t){return t.reduce((function(t,e){return Array.isArray(e)&&(e=e.reduce((function(t,e){return t.length>e.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"preciseAddition",value:function(t,e){var i=(String(t).split(".")[1]||"").length,a=(String(e).split(".")[1]||"").length,s=Math.pow(10,Math.max(i,a));return(Math.round(t*s)+Math.round(e*s))/s}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isMsEdge",value:function(){var t=window.navigator.userAgent,e=t.indexOf("Edge/");return e>0&&parseInt(t.substring(e+5,t.indexOf(".",e)),10)}},{key:"getGCD",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));for(a>1?(t=Math.round(Math.abs(t)*a),e=Math.round(Math.abs(e)*a)):a=1;e;){var s=e;e=t%e,t=s}return t/a}},{key:"getPrimeFactors",value:function(t){for(var e=[],i=2;t>=2;)t%i==0?(e.push(i),t/=i):i++;return e}},{key:"mod",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));return(t=Math.round(Math.abs(t)*a))%(e=Math.round(Math.abs(e)*a))/a}}]),t}(),y=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"animateLine",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:"animateMarker",value:function(t,e,i,a){t.attr({opacity:0}).animate(e).attr({opacity:1}).after((function(){a()}))}},{key:"animateRect",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).after((function(){return s()}))}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,n=t.pathTo,o=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&"bar"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,"line"!==h.config.chart.type||h.globals.comboCharts?s:"stroke",r,n,o,l*c)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach((function(t){var e=t.el;e.classList.remove("apexcharts-element-hidden"),e.classList.add("apexcharts-hidden-element-shown")}))}},{key:"animationCompleted",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),"function"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:"morphSVG",value:function(t,e,i,a,s,r,n,o){var l=this,h=this.w;s||(s=t.attr("pathFrom")),r||(r=t.attr("pathTo"));var c=function(t){return"radar"===h.config.chart.type&&(n=1),"M 0 ".concat(h.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=c()),(!r.trim()||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=c()),h.globals.shouldAnimate||(n=1),t.plot(s).animate(1,o).plot(s).animate(n,o).plot(r).after((function(){v.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}();const w={},k=[];function A(t,e){if(Array.isArray(t))for(const i of t)A(i,e);else if("object"!=typeof t)S(Object.getOwnPropertyNames(e)),w[t]=Object.assign(w[t]||{},e);else for(const e in t)A(e,t[e])}function C(t){return w[t]||{}}function S(t){k.push(...t)}function L(t,e){let i;const a=t.length,s=[];for(i=0;iz.has(t.nodeName),R=(t,e,i={})=>{const a={...e};for(const t in a)a[t].valueOf()===i[t]&&delete a[t];Object.keys(a).length?t.node.setAttribute("data-svgjs",JSON.stringify(a)):(t.node.removeAttribute("data-svgjs"),t.node.removeAttribute("svgjs:data"))},E="http://www.w3.org/2000/svg",Y="http://www.w3.org/2000/xmlns/",H="http://www.w3.org/1999/xlink",O={window:"undefined"==typeof window?null:window,document:"undefined"==typeof document?null:document};function F(){return O.window}let D=class{};const _={},N="___SYMBOL___ROOT___";function W(t,e=E){return O.document.createElementNS(e,t)}function B(t,e=!1){if(t instanceof D)return t;if("object"==typeof t)return U(t);if(null==t)return new _[N];if("string"==typeof t&&"<"!==t.charAt(0))return U(O.document.querySelector(t));const i=e?O.document.createElement("div"):W("svg");return i.innerHTML=t,t=U(i.firstChild),i.removeChild(i.firstChild),t}function G(t,e){return e&&(e instanceof O.window.Node||e.ownerDocument&&e instanceof e.ownerDocument.defaultView.Node)?e:W(t)}function V(t){if(!t)return null;if(t.instance instanceof D)return t.instance;if("#document-fragment"===t.nodeName)return new _.Fragment(t);let e=P(t.nodeName||"Dom");return"LinearGradient"===e||"RadialGradient"===e?e="Gradient":_[e]||(e="Dom"),new _[e](t)}let U=V;function q(t,e=t.name,i=!1){return _[e]=t,i&&(_[N]=t),S(Object.getOwnPropertyNames(t.prototype)),t}let Z=1e3;function $(t){return"Svgjs"+P(t)+Z++}function J(t){for(let e=t.children.length-1;e>=0;e--)J(t.children[e]);return t.id?(t.id=$(t.nodeName),t):t}function Q(t,e){let i,a;for(a=(t=Array.isArray(t)?t:[t]).length-1;a>=0;a--)for(i in e)t[a].prototype[i]=e[i]}function K(t){return function(...e){const i=e[e.length-1];return!i||i.constructor!==Object||i instanceof Array?t.apply(this,e):t.apply(this,e.slice(0,-1)).attr(i)}}A("Dom",{siblings:function(){return this.parent().children()},position:function(){return this.parent().index(this)},next:function(){return this.siblings()[this.position()+1]},prev:function(){return this.siblings()[this.position()-1]},forward:function(){const t=this.position();return this.parent().add(this.remove(),t+1),this},backward:function(){const t=this.position();return this.parent().add(this.remove(),t?t-1:0),this},front:function(){return this.parent().add(this.remove()),this},back:function(){return this.parent().add(this.remove(),0),this},before:function(t){(t=B(t)).remove();const e=this.position();return this.parent().add(t,e),this},after:function(t){(t=B(t)).remove();const e=this.position();return this.parent().add(t,e+1),this},insertBefore:function(t){return(t=B(t)).before(this),this},insertAfter:function(t){return(t=B(t)).after(this),this}});const tt=/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,et=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,it=/rgb\((\d+),(\d+),(\d+)\)/,at=/(#[a-z_][a-z0-9\-_]*)/i,st=/\)\s*,?\s*/,rt=/\s/g,nt=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i,ot=/^rgb\(/,lt=/^(\s+)?$/,ht=/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ct=/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,dt=/[\s,]+/,ut=/[MLHVCSQTAZ]/i;function gt(t){const e=Math.round(t),i=Math.max(0,Math.min(255,e)).toString(16);return 1===i.length?"0"+i:i}function pt(t,e){for(let i=e.length;i--;)if(null==t[e[i]])return!1;return!0}function ft(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}A("Dom",{classes:function(){const t=this.attr("class");return null==t?[]:t.trim().split(dt)},hasClass:function(t){return-1!==this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){const e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!==t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)}}),A("Dom",{css:function(t,e){const i={};if(0===arguments.length)return this.node.style.cssText.split(/\s*;\s*/).filter((function(t){return!!t.length})).forEach((function(t){const e=t.split(/\s*:\s*/);i[e[0]]=e[1]})),i;if(arguments.length<2){if(Array.isArray(t)){for(const e of t){const t=e;i[e]=this.node.style.getPropertyValue(t)}return i}if("string"==typeof t)return this.node.style.getPropertyValue(t);if("object"==typeof t)for(const e in t)this.node.style.setProperty(e,null==t[e]||lt.test(t[e])?"":t[e])}return 2===arguments.length&&this.node.style.setProperty(t,null==e||lt.test(e)?"":e),this},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},visible:function(){return"none"!==this.css("display")}}),A("Dom",{data:function(t,e,i){if(null==t)return this.data(L(function(t,e){let i;const a=t.length,s=[];for(i=0;i0===t.nodeName.indexOf("data-"))),(t=>t.nodeName.slice(5))));if(t instanceof Array){const e={};for(const i of t)e[i]=this.data(i);return e}if("object"==typeof t)for(e in t)this.data(e,t[e]);else if(arguments.length<2)try{return JSON.parse(this.attr("data-"+t))}catch(e){return this.attr("data-"+t)}else this.attr("data-"+t,null===e?null:!0===i||"string"==typeof e||"number"==typeof e?e:JSON.stringify(e));return this}}),A("Dom",{remember:function(t,e){if("object"==typeof arguments[0])for(const e in t)this.remember(e,t[e]);else{if(1===arguments.length)return this.memory()[t];this.memory()[t]=e}return this},forget:function(){if(0===arguments.length)this._memory={};else for(let t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory=this._memory||{}}});class xt{constructor(...t){this.init(...t)}static isColor(t){return t&&(t instanceof xt||this.isRgb(t)||this.test(t))}static isRgb(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b}static random(t="vibrant",e){const{random:i,round:a,sin:s,PI:r}=Math;if("vibrant"===t){const t=24*i()+57,e=38*i()+45,a=360*i();return new xt(t,e,a,"lch")}if("sine"===t){const t=a(80*s(2*r*(e=null==e?i():e)/.5+.01)+150),n=a(50*s(2*r*e/.5+4.6)+200),o=a(100*s(2*r*e/.5+2.3)+150);return new xt(t,n,o)}if("pastel"===t){const t=8*i()+86,e=17*i()+9,a=360*i();return new xt(t,e,a,"lch")}if("dark"===t){const t=10+10*i(),e=50*i()+86,a=360*i();return new xt(t,e,a,"lch")}if("rgb"===t){const t=255*i(),e=255*i(),a=255*i();return new xt(t,e,a)}if("lab"===t){const t=100*i(),e=256*i()-128,a=256*i()-128;return new xt(t,e,a,"lab")}if("grey"===t){const t=255*i();return new xt(t,t,t)}throw new Error("Unsupported random color mode")}static test(t){return"string"==typeof t&&(nt.test(t)||ot.test(t))}cmyk(){const{_a:t,_b:e,_c:i}=this.rgb(),[a,s,r]=[t,e,i].map((t=>t/255)),n=Math.min(1-a,1-s,1-r);if(1===n)return new xt(0,0,0,1,"cmyk");return new xt((1-a-n)/(1-n),(1-s-n)/(1-n),(1-r-n)/(1-n),n,"cmyk")}hsl(){const{_a:t,_b:e,_c:i}=this.rgb(),[a,s,r]=[t,e,i].map((t=>t/255)),n=Math.max(a,s,r),o=Math.min(a,s,r),l=(n+o)/2,h=n===o,c=n-o;return new xt(360*(h?0:n===a?((s-r)/c+(s.5?c/(2-n-o):c/(n+o)),100*l,"hsl")}init(t=0,e=0,i=0,a=0,s="rgb"){if(t=t||0,this.space)for(const t in this.space)delete this[this.space[t]];if("number"==typeof t)s="string"==typeof a?a:s,a="string"==typeof a?0:a,Object.assign(this,{_a:t,_b:e,_c:i,_d:a,space:s});else if(t instanceof Array)this.space=e||("string"==typeof t[3]?t[3]:t[4])||"rgb",Object.assign(this,{_a:t[0],_b:t[1],_c:t[2],_d:t[3]||0});else if(t instanceof Object){const i=function(t,e){const i=pt(t,"rgb")?{_a:t.r,_b:t.g,_c:t.b,_d:0,space:"rgb"}:pt(t,"xyz")?{_a:t.x,_b:t.y,_c:t.z,_d:0,space:"xyz"}:pt(t,"hsl")?{_a:t.h,_b:t.s,_c:t.l,_d:0,space:"hsl"}:pt(t,"lab")?{_a:t.l,_b:t.a,_c:t.b,_d:0,space:"lab"}:pt(t,"lch")?{_a:t.l,_b:t.c,_c:t.h,_d:0,space:"lch"}:pt(t,"cmyk")?{_a:t.c,_b:t.m,_c:t.y,_d:t.k,space:"cmyk"}:{_a:0,_b:0,_c:0,space:"rgb"};return i.space=e||i.space,i}(t,e);Object.assign(this,i)}else if("string"==typeof t)if(ot.test(t)){const e=t.replace(rt,""),[i,a,s]=it.exec(e).slice(1,4).map((t=>parseInt(t)));Object.assign(this,{_a:i,_b:a,_c:s,_d:0,space:"rgb"})}else{if(!nt.test(t))throw Error("Unsupported string format, can't construct Color");{const e=t=>parseInt(t,16),[,i,a,s]=et.exec(function(t){return 4===t.length?["#",t.substring(1,2),t.substring(1,2),t.substring(2,3),t.substring(2,3),t.substring(3,4),t.substring(3,4)].join(""):t}(t)).map(e);Object.assign(this,{_a:i,_b:a,_c:s,_d:0,space:"rgb"})}}const{_a:r,_b:n,_c:o,_d:l}=this,h="rgb"===this.space?{r:r,g:n,b:o}:"xyz"===this.space?{x:r,y:n,z:o}:"hsl"===this.space?{h:r,s:n,l:o}:"lab"===this.space?{l:r,a:n,b:o}:"lch"===this.space?{l:r,c:n,h:o}:"cmyk"===this.space?{c:r,m:n,y:o,k:l}:{};Object.assign(this,h)}lab(){const{x:t,y:e,z:i}=this.xyz();return new xt(116*e-16,500*(t-e),200*(e-i),"lab")}lch(){const{l:t,a:e,b:i}=this.lab(),a=Math.sqrt(e**2+i**2);let s=180*Math.atan2(i,e)/Math.PI;s<0&&(s*=-1,s=360-s);return new xt(t,a,s,"lch")}rgb(){if("rgb"===this.space)return this;if("lab"===(t=this.space)||"xyz"===t||"lch"===t){let{x:t,y:e,z:i}=this;if("lab"===this.space||"lch"===this.space){let{l:a,a:s,b:r}=this;if("lch"===this.space){const{c:t,h:e}=this,i=Math.PI/180;s=t*Math.cos(i*e),r=t*Math.sin(i*e)}const n=(a+16)/116,o=s/500+n,l=n-r/200,h=16/116,c=.008856,d=7.787;t=.95047*(o**3>c?o**3:(o-h)/d),e=1*(n**3>c?n**3:(n-h)/d),i=1.08883*(l**3>c?l**3:(l-h)/d)}const a=3.2406*t+-1.5372*e+-.4986*i,s=-.9689*t+1.8758*e+.0415*i,r=.0557*t+-.204*e+1.057*i,n=Math.pow,o=.0031308,l=a>o?1.055*n(a,1/2.4)-.055:12.92*a,h=s>o?1.055*n(s,1/2.4)-.055:12.92*s,c=r>o?1.055*n(r,1/2.4)-.055:12.92*r;return new xt(255*l,255*h,255*c)}if("hsl"===this.space){let{h:t,s:e,l:i}=this;if(t/=360,e/=100,i/=100,0===e){i*=255;return new xt(i,i,i)}const a=i<.5?i*(1+e):i+e-i*e,s=2*i-a,r=255*ft(s,a,t+1/3),n=255*ft(s,a,t),o=255*ft(s,a,t-1/3);return new xt(r,n,o)}if("cmyk"===this.space){const{c:t,m:e,y:i,k:a}=this,s=255*(1-Math.min(1,t*(1-a)+a)),r=255*(1-Math.min(1,e*(1-a)+a)),n=255*(1-Math.min(1,i*(1-a)+a));return new xt(s,r,n)}return this;var t}toArray(){const{_a:t,_b:e,_c:i,_d:a,space:s}=this;return[t,e,i,a,s]}toHex(){const[t,e,i]=this._clamped().map(gt);return`#${t}${e}${i}`}toRgb(){const[t,e,i]=this._clamped();return`rgb(${t},${e},${i})`}toString(){return this.toHex()}xyz(){const{_a:t,_b:e,_c:i}=this.rgb(),[a,s,r]=[t,e,i].map((t=>t/255)),n=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92,o=s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92,l=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,h=(.4124*n+.3576*o+.1805*l)/.95047,c=(.2126*n+.7152*o+.0722*l)/1,d=(.0193*n+.1192*o+.9505*l)/1.08883,u=h>.008856?Math.pow(h,1/3):7.787*h+16/116,g=c>.008856?Math.pow(c,1/3):7.787*c+16/116,p=d>.008856?Math.pow(d,1/3):7.787*d+16/116;return new xt(u,g,p,"xyz")}_clamped(){const{_a:t,_b:e,_c:i}=this.rgb(),{max:a,min:s,round:r}=Math;return[t,e,i].map((t=>a(0,s(r(t),255))))}}class bt{constructor(...t){this.init(...t)}clone(){return new bt(this)}init(t,e){const i=0,a=0,s=Array.isArray(t)?{x:t[0],y:t[1]}:"object"==typeof t?{x:t.x,y:t.y}:{x:t,y:e};return this.x=null==s.x?i:s.x,this.y=null==s.y?a:s.y,this}toArray(){return[this.x,this.y]}transform(t){return this.clone().transformO(t)}transformO(t){vt.isMatrixLike(t)||(t=new vt(t));const{x:e,y:i}=this;return this.x=t.a*e+t.c*i+t.e,this.y=t.b*e+t.d*i+t.f,this}}function mt(t,e,i){return Math.abs(e-t)<(i||1e-6)}class vt{constructor(...t){this.init(...t)}static formatTransforms(t){const e="both"===t.flip||!0===t.flip,i=t.flip&&(e||"x"===t.flip)?-1:1,a=t.flip&&(e||"y"===t.flip)?-1:1,s=t.skew&&t.skew.length?t.skew[0]:isFinite(t.skew)?t.skew:isFinite(t.skewX)?t.skewX:0,r=t.skew&&t.skew.length?t.skew[1]:isFinite(t.skew)?t.skew:isFinite(t.skewY)?t.skewY:0,n=t.scale&&t.scale.length?t.scale[0]*i:isFinite(t.scale)?t.scale*i:isFinite(t.scaleX)?t.scaleX*i:i,o=t.scale&&t.scale.length?t.scale[1]*a:isFinite(t.scale)?t.scale*a:isFinite(t.scaleY)?t.scaleY*a:a,l=t.shear||0,h=t.rotate||t.theta||0,c=new bt(t.origin||t.around||t.ox||t.originX,t.oy||t.originY),d=c.x,u=c.y,g=new bt(t.position||t.px||t.positionX||NaN,t.py||t.positionY||NaN),p=g.x,f=g.y,x=new bt(t.translate||t.tx||t.translateX,t.ty||t.translateY),b=x.x,m=x.y,v=new bt(t.relative||t.rx||t.relativeX,t.ry||t.relativeY);return{scaleX:n,scaleY:o,skewX:s,skewY:r,shear:l,theta:h,rx:v.x,ry:v.y,tx:b,ty:m,ox:d,oy:u,px:p,py:f}}static fromArray(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}static isMatrixLike(t){return null!=t.a||null!=t.b||null!=t.c||null!=t.d||null!=t.e||null!=t.f}static matrixMultiply(t,e,i){const a=t.a*e.a+t.c*e.b,s=t.b*e.a+t.d*e.b,r=t.a*e.c+t.c*e.d,n=t.b*e.c+t.d*e.d,o=t.e+t.a*e.e+t.c*e.f,l=t.f+t.b*e.e+t.d*e.f;return i.a=a,i.b=s,i.c=r,i.d=n,i.e=o,i.f=l,i}around(t,e,i){return this.clone().aroundO(t,e,i)}aroundO(t,e,i){const a=t||0,s=e||0;return this.translateO(-a,-s).lmultiplyO(i).translateO(a,s)}clone(){return new vt(this)}decompose(t=0,e=0){const i=this.a,a=this.b,s=this.c,r=this.d,n=this.e,o=this.f,l=i*r-a*s,h=l>0?1:-1,c=h*Math.sqrt(i*i+a*a),d=Math.atan2(h*a,h*i),u=180/Math.PI*d,g=Math.cos(d),p=Math.sin(d),f=(i*s+a*r)/l,x=s*c/(f*i-a)||r*c/(f*a+i);return{scaleX:c,scaleY:x,shear:f,rotate:u,translateX:n-t+t*g*c+e*(f*g*c-p*x),translateY:o-e+t*p*c+e*(f*p*c+g*x),originX:t,originY:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(t){if(t===this)return!0;const e=new vt(t);return mt(this.a,e.a)&&mt(this.b,e.b)&&mt(this.c,e.c)&&mt(this.d,e.d)&&mt(this.e,e.e)&&mt(this.f,e.f)}flip(t,e){return this.clone().flipO(t,e)}flipO(t,e){return"x"===t?this.scaleO(-1,1,e,0):"y"===t?this.scaleO(1,-1,0,e):this.scaleO(-1,-1,t,e||t)}init(t){const e=vt.fromArray([1,0,0,1,0,0]);return t=t instanceof Gt?t.matrixify():"string"==typeof t?vt.fromArray(t.split(dt).map(parseFloat)):Array.isArray(t)?vt.fromArray(t):"object"==typeof t&&vt.isMatrixLike(t)?t:"object"==typeof t?(new vt).transform(t):6===arguments.length?vt.fromArray([].slice.call(arguments)):e,this.a=null!=t.a?t.a:e.a,this.b=null!=t.b?t.b:e.b,this.c=null!=t.c?t.c:e.c,this.d=null!=t.d?t.d:e.d,this.e=null!=t.e?t.e:e.e,this.f=null!=t.f?t.f:e.f,this}inverse(){return this.clone().inverseO()}inverseO(){const t=this.a,e=this.b,i=this.c,a=this.d,s=this.e,r=this.f,n=t*a-e*i;if(!n)throw new Error("Cannot invert "+this);const o=a/n,l=-e/n,h=-i/n,c=t/n,d=-(o*s+h*r),u=-(l*s+c*r);return this.a=o,this.b=l,this.c=h,this.d=c,this.e=d,this.f=u,this}lmultiply(t){return this.clone().lmultiplyO(t)}lmultiplyO(t){const e=t instanceof vt?t:new vt(t);return vt.matrixMultiply(e,this,this)}multiply(t){return this.clone().multiplyO(t)}multiplyO(t){const e=t instanceof vt?t:new vt(t);return vt.matrixMultiply(this,e,this)}rotate(t,e,i){return this.clone().rotateO(t,e,i)}rotateO(t,e=0,i=0){t=M(t);const a=Math.cos(t),s=Math.sin(t),{a:r,b:n,c:o,d:l,e:h,f:c}=this;return this.a=r*a-n*s,this.b=n*a+r*s,this.c=o*a-l*s,this.d=l*a+o*s,this.e=h*a-c*s+i*s-e*a+e,this.f=c*a+h*s-e*s-i*a+i,this}scale(){return this.clone().scaleO(...arguments)}scaleO(t,e=t,i=0,a=0){3===arguments.length&&(a=i,i=e,e=t);const{a:s,b:r,c:n,d:o,e:l,f:h}=this;return this.a=s*t,this.b=r*e,this.c=n*t,this.d=o*e,this.e=l*t-i*t+i,this.f=h*e-a*e+a,this}shear(t,e,i){return this.clone().shearO(t,e,i)}shearO(t,e=0,i=0){const{a:a,b:s,c:r,d:n,e:o,f:l}=this;return this.a=a+s*t,this.c=r+n*t,this.e=o+l*t-i*t,this}skew(){return this.clone().skewO(...arguments)}skewO(t,e=t,i=0,a=0){3===arguments.length&&(a=i,i=e,e=t),t=M(t),e=M(e);const s=Math.tan(t),r=Math.tan(e),{a:n,b:o,c:l,d:h,e:c,f:d}=this;return this.a=n+o*s,this.b=o+n*r,this.c=l+h*s,this.d=h+l*r,this.e=c+d*s-a*s,this.f=d+c*r-i*r,this}skewX(t,e,i){return this.skew(t,0,e,i)}skewY(t,e,i){return this.skew(0,t,e,i)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return"matrix("+this.a+","+this.b+","+this.c+","+this.d+","+this.e+","+this.f+")"}transform(t){if(vt.isMatrixLike(t)){return new vt(t).multiplyO(this)}const e=vt.formatTransforms(t),{x:i,y:a}=new bt(e.ox,e.oy).transform(this),s=(new vt).translateO(e.rx,e.ry).lmultiplyO(this).translateO(-i,-a).scaleO(e.scaleX,e.scaleY).skewO(e.skewX,e.skewY).shearO(e.shear).rotateO(e.theta).translateO(i,a);if(isFinite(e.px)||isFinite(e.py)){const t=new bt(i,a).transform(s),r=isFinite(e.px)?e.px-t.x:0,n=isFinite(e.py)?e.py-t.y:0;s.translateO(r,n)}return s.translateO(e.tx,e.ty),s}translate(t,e){return this.clone().translateO(t,e)}translateO(t,e){return this.e+=t||0,this.f+=e||0,this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function yt(){if(!yt.nodes){const t=B().size(2,0);t.node.style.cssText=["opacity: 0","position: absolute","left: -100%","top: -100%","overflow: hidden"].join(";"),t.attr("focusable","false"),t.attr("aria-hidden","true");const e=t.path().node;yt.nodes={svg:t,path:e}}if(!yt.nodes.svg.node.parentNode){const t=O.document.body||O.document.documentElement;yt.nodes.svg.addTo(t)}return yt.nodes}function wt(t){return!(t.width||t.height||t.x||t.y)}q(vt,"Matrix");class kt{constructor(...t){this.init(...t)}addOffset(){return this.x+=O.window.pageXOffset,this.y+=O.window.pageYOffset,new kt(this)}init(t){return t="string"==typeof t?t.split(dt).map(parseFloat):Array.isArray(t)?t:"object"==typeof t?[null!=t.left?t.left:t.x,null!=t.top?t.top:t.y,t.width,t.height]:4===arguments.length?[].slice.call(arguments):[0,0,0,0],this.x=t[0]||0,this.y=t[1]||0,this.width=this.w=t[2]||0,this.height=this.h=t[3]||0,this.x2=this.x+this.w,this.y2=this.y+this.h,this.cx=this.x+this.w/2,this.cy=this.y+this.h/2,this}isNulled(){return wt(this)}merge(t){const e=Math.min(this.x,t.x),i=Math.min(this.y,t.y),a=Math.max(this.x+this.width,t.x+t.width)-e,s=Math.max(this.y+this.height,t.y+t.height)-i;return new kt(e,i,a,s)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+" "+this.y+" "+this.width+" "+this.height}transform(t){t instanceof vt||(t=new vt(t));let e=1/0,i=-1/0,a=1/0,s=-1/0;return[new bt(this.x,this.y),new bt(this.x2,this.y),new bt(this.x,this.y2),new bt(this.x2,this.y2)].forEach((function(r){r=r.transform(t),e=Math.min(e,r.x),i=Math.max(i,r.x),a=Math.min(a,r.y),s=Math.max(s,r.y)})),new kt(e,a,i-e,s-a)}}function At(t,e,i){let a;try{if(a=e(t.node),wt(a)&&((s=t.node)!==O.document&&!(O.document.documentElement.contains||function(t){for(;t.parentNode;)t=t.parentNode;return t===O.document}).call(O.document.documentElement,s)))throw new Error("Element not in the dom")}catch(e){a=i(t)}var s;return a}A({viewbox:{viewbox(t,e,i,a){return null==t?new kt(this.attr("viewBox")):this.attr("viewBox",new kt(t,e,i,a))},zoom(t,e){let{width:i,height:a}=this.attr(["width","height"]);if((i||a)&&"string"!=typeof i&&"string"!=typeof a||(i=this.node.clientWidth,a=this.node.clientHeight),!i||!a)throw new Error("Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element");const s=this.viewbox(),r=i/s.width,n=a/s.height,o=Math.min(r,n);if(null==t)return o;let l=o/t;l===1/0&&(l=Number.MAX_SAFE_INTEGER/100),e=e||new bt(i/2/r+s.x,a/2/n+s.y);const h=new kt(s).transform(new vt({scale:l,origin:e}));return this.viewbox(h)}}}),q(kt,"Box");class Ct extends Array{constructor(t=[],...e){if(super(t,...e),"number"==typeof t)return this;this.length=0,this.push(...t)}}Q([Ct],{each(t,...e){return"function"==typeof t?this.map(((e,i,a)=>t.call(e,e,i,a))):this.map((i=>i[t](...e)))},toArray(){return Array.prototype.concat.apply([],this)}});const St=["toArray","constructor","each"];function Lt(t,e){return new Ct(L((e||O.document).querySelectorAll(t),(function(t){return V(t)})))}Ct.extend=function(t){t=t.reduce(((t,e)=>(St.includes(e)||"_"===e[0]||(e in Array.prototype&&(t["$"+e]=Array.prototype[e]),t[e]=function(...t){return this.each(e,...t)}),t)),{}),Q([Ct],t)};let Mt=0;const Pt={};function It(t){let e=t.getEventHolder();return e===O.window&&(e=Pt),e.events||(e.events={}),e.events}function Tt(t){return t.getEventTarget()}function zt(t,e,i,a,s){const r=i.bind(a||t),n=B(t),o=It(n),l=Tt(n);e=Array.isArray(e)?e:e.split(dt),i._svgjsListenerId||(i._svgjsListenerId=++Mt),e.forEach((function(t){const e=t.split(".")[0],a=t.split(".")[1]||"*";o[e]=o[e]||{},o[e][a]=o[e][a]||{},o[e][a][i._svgjsListenerId]=r,l.addEventListener(e,r,s||!1)}))}function Xt(t,e,i,a){const s=B(t),r=It(s),n=Tt(s);("function"!=typeof i||(i=i._svgjsListenerId))&&(e=Array.isArray(e)?e:(e||"").split(dt)).forEach((function(t){const e=t&&t.split(".")[0],o=t&&t.split(".")[1];let l,h;if(i)r[e]&&r[e][o||"*"]&&(n.removeEventListener(e,r[e][o||"*"][i],a||!1),delete r[e][o||"*"][i]);else if(e&&o){if(r[e]&&r[e][o]){for(h in r[e][o])Xt(n,[e,o].join("."),h);delete r[e][o]}}else if(o)for(t in r)for(l in r[t])o===l&&Xt(n,[t,o].join("."));else if(e){if(r[e]){for(l in r[e])Xt(n,[e,l].join("."));delete r[e]}}else{for(t in r)Xt(n,t);!function(t){let e=t.getEventHolder();e===O.window&&(e=Pt),e.events&&(e.events={})}(s)}}))}class Rt extends D{addEventListener(){}dispatch(t,e,i){return function(t,e,i,a){const s=Tt(t);return e instanceof O.window.Event||(e=new O.window.CustomEvent(e,{detail:i,cancelable:!0,...a})),s.dispatchEvent(e),e}(this,t,e,i)}dispatchEvent(t){const e=this.getEventHolder().events;if(!e)return!0;const i=e[t.type];for(const e in i)for(const a in i[e])i[e][a](t);return!t.defaultPrevented}fire(t,e,i){return this.dispatch(t,e,i),this}getEventHolder(){return this}getEventTarget(){return this}off(t,e,i){return Xt(this,t,e,i),this}on(t,e,i,a){return zt(this,t,e,i,a),this}removeEventListener(){}}function Et(){}q(Rt,"EventTarget");const Yt=400,Ht=">",Ot=0,Ft={"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","text-anchor":"start"};class Dt extends Array{constructor(...t){super(...t),this.init(...t)}clone(){return new this.constructor(this)}init(t){return"number"==typeof t||(this.length=0,this.push(...this.parse(t))),this}parse(t=[]){return t instanceof Array?t:t.trim().split(dt).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(" ")}valueOf(){const t=[];return t.push(...this),t}}class _t{constructor(...t){this.init(...t)}convert(t){return new _t(this.value,t)}divide(t){return t=new _t(t),new _t(this/t,this.unit||t.unit)}init(t,e){return e=Array.isArray(t)?t[1]:e,t=Array.isArray(t)?t[0]:t,this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(tt))&&(this.value=parseFloat(e[1]),"%"===e[5]?this.value/=100:"s"===e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof _t&&(this.value=t.valueOf(),this.unit=t.unit),this}minus(t){return t=new _t(t),new _t(this-t,this.unit||t.unit)}plus(t){return t=new _t(t),new _t(this+t,this.unit||t.unit)}times(t){return t=new _t(t),new _t(this*t,this.unit||t.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return("%"===this.unit?~~(1e8*this.value)/1e6:"s"===this.unit?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const Nt=new Set(["fill","stroke","color","bgcolor","stop-color","flood-color","lighting-color"]),Wt=[];class Bt extends Rt{constructor(t,e){super(),this.node=t,this.type=t.nodeName,e&&t!==e&&this.attr(e)}add(t,e){return(t=B(t)).removeNamespace&&this.node instanceof O.window.SVGElement&&t.removeNamespace(),null==e?this.node.appendChild(t.node):t.node!==this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this}addTo(t,e){return B(t).put(this,e)}children(){return new Ct(L(this.node.children,(function(t){return V(t)})))}clear(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return this}clone(t=!0,e=!0){this.writeDataToDom();let i=this.node.cloneNode(t);return e&&(i=J(i)),new this.constructor(i)}each(t,e){const i=this.children();let a,s;for(a=0,s=i.length;a=0}html(t,e){return this.xml(t,e,"http://www.w3.org/1999/xhtml")}id(t){return void 0!==t||this.node.id||(this.node.id=$(this.type)),this.attr("id",t)}index(t){return[].slice.call(this.node.childNodes).indexOf(t.node)}last(){return V(this.node.lastChild)}matches(t){const e=this.node,i=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector||null;return i&&i.call(e,t)}parent(t){let e=this;if(!e.node.parentNode)return null;if(e=V(e.node.parentNode),!t)return e;do{if("string"==typeof t?e.matches(t):e instanceof t)return e}while(e=V(e.node.parentNode));return e}put(t,e){return t=B(t),this.add(t,e),t}putIn(t,e){return B(t).add(this,e)}remove(){return this.parent()&&this.parent().removeElement(this),this}removeElement(t){return this.node.removeChild(t.node),this}replace(t){return t=B(t),this.node.parentNode&&this.node.parentNode.replaceChild(t.node,this.node),t}round(t=2,e=null){const i=10**t,a=this.attr(e);for(const t in a)"number"==typeof a[t]&&(a[t]=Math.round(a[t]*i)/i);return this.attr(a),this}svg(t,e){return this.xml(t,e,E)}toString(){return this.id()}words(t){return this.node.textContent=t,this}wrap(t){const e=this.parent();if(!e)return this.addTo(t);const i=e.index(this);return e.put(t,i).put(this)}writeDataToDom(){return this.each((function(){this.writeDataToDom()})),this}xml(t,e,i){if("boolean"==typeof t&&(i=e,e=t,t=null),null==t||"function"==typeof t){e=null==e||e,this.writeDataToDom();let i=this;if(null!=t){if(i=V(i.node.cloneNode(!0)),e){const e=t(i);if(i=e||i,!1===e)return""}i.each((function(){const e=t(this),i=e||this;!1===e?this.remove():e&&this!==i&&this.replace(i)}),!0)}return e?i.node.outerHTML:i.node.innerHTML}e=null!=e&&e;const a=W("wrapper",i),s=O.document.createDocumentFragment();a.innerHTML=t;for(let t=a.children.length;t--;)s.appendChild(a.firstElementChild);const r=this.parent();return e?this.replace(s)&&r:this.add(s)}}Q(Bt,{attr:function(t,e,i){if(null==t){t={},e=this.node.attributes;for(const i of e)t[i.nodeName]=ht.test(i.nodeValue)?parseFloat(i.nodeValue):i.nodeValue;return t}if(t instanceof Array)return t.reduce(((t,e)=>(t[e]=this.attr(e),t)),{});if("object"==typeof t&&t.constructor===Object)for(e in t)this.attr(e,t[e]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?Ft[t]:ht.test(e)?parseFloat(e):e;"number"==typeof(e=Wt.reduce(((e,i)=>i(t,e,this)),e))?e=new _t(e):Nt.has(t)&&xt.isColor(e)?e=new xt(e):e.constructor===Array&&(e=new Dt(e)),"leading"===t?this.leading&&this.leading(e):"string"==typeof i?this.node.setAttributeNS(i,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!==t&&"x"!==t||this.rebuild()}return this},find:function(t){return Lt(t,this.node)},findOne:function(t){return V(this.node.querySelector(t))}}),q(Bt,"Dom");let Gt=class extends Bt{constructor(t,e){super(t,e),this.dom={},this.node.instance=this,(t.hasAttribute("data-svgjs")||t.hasAttribute("svgjs:data"))&&this.setData(JSON.parse(t.getAttribute("data-svgjs"))??JSON.parse(t.getAttribute("svgjs:data"))??{})}center(t,e){return this.cx(t).cy(e)}cx(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)}cy(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)}defs(){const t=this.root();return t&&t.defs()}dmove(t,e){return this.dx(t).dy(e)}dx(t=0){return this.x(new _t(t).plus(this.x()))}dy(t=0){return this.y(new _t(t).plus(this.y()))}getEventHolder(){return this}height(t){return this.attr("height",t)}move(t,e){return this.x(t).y(e)}parents(t=this.root()){const e="string"==typeof t;e||(t=B(t));const i=new Ct;let a=this;for(;(a=a.parent())&&a.node!==O.document&&"#document-fragment"!==a.nodeName&&(i.push(a),e||a.node!==t.node)&&(!e||!a.matches(t));)if(a.node===this.root().node)return null;return i}reference(t){if(!(t=this.attr(t)))return null;const e=(t+"").match(at);return e?B(e[1]):null}root(){const t=this.parent(function(t){return _[t]}(N));return t&&t.root()}setData(t){return this.dom=t,this}size(t,e){const i=I(this,t,e);return this.width(new _t(i.width)).height(new _t(i.height))}width(t){return this.attr("width",t)}writeDataToDom(){return R(this,this.dom),super.writeDataToDom()}x(t){return this.attr("x",t)}y(t){return this.attr("y",t)}};Q(Gt,{bbox:function(){const t=At(this,(t=>t.getBBox()),(t=>{try{const e=t.clone().addTo(yt().svg).show(),i=e.node.getBBox();return e.remove(),i}catch(e){throw new Error(`Getting bbox of element "${t.node.nodeName}" is not possible: ${e.toString()}`)}}));return new kt(t)},rbox:function(t){const e=At(this,(t=>t.getBoundingClientRect()),(t=>{throw new Error(`Getting rbox of element "${t.node.nodeName}" is not possible`)})),i=new kt(e);return t?i.transform(t.screenCTM().inverseO()):i.addOffset()},inside:function(t,e){const i=this.bbox();return t>i.x&&e>i.y&&t=0;i--)null!=e[jt[t][i]]&&this.attr(jt.prefix(t,jt[t][i]),e[jt[t][i]]);return this},A(["Element","Runner"],e)})),A(["Element","Runner"],{matrix:function(t,e,i,a,s,r){return null==t?new vt(this):this.attr("transform",new vt(t,e,i,a,s,r))},rotate:function(t,e,i){return this.transform({rotate:t,ox:e,oy:i},!0)},skew:function(t,e,i,a){return 1===arguments.length||3===arguments.length?this.transform({skew:t,ox:e,oy:i},!0):this.transform({skew:[t,e],ox:i,oy:a},!0)},shear:function(t,e,i){return this.transform({shear:t,ox:e,oy:i},!0)},scale:function(t,e,i,a){return 1===arguments.length||3===arguments.length?this.transform({scale:t,ox:e,oy:i},!0):this.transform({scale:[t,e],ox:i,oy:a},!0)},translate:function(t,e){return this.transform({translate:[t,e]},!0)},relative:function(t,e){return this.transform({relative:[t,e]},!0)},flip:function(t="both",e="center"){return-1==="xybothtrue".indexOf(t)&&(e=t,t="both"),this.transform({flip:t,origin:e},!0)},opacity:function(t){return this.attr("opacity",t)}}),A("radius",{radius:function(t,e=t){return"radialGradient"===(this._element||this).type?this.attr("r",new _t(t)):this.rx(t).ry(e)}}),A("Path",{length:function(){return this.node.getTotalLength()},pointAt:function(t){return new bt(this.node.getPointAtLength(t))}}),A(["Element","Runner"],{font:function(t,e){if("object"==typeof t){for(e in t)this.font(e,t[e]);return this}return"leading"===t?this.leading(e):"anchor"===t?this.attr("text-anchor",e):"size"===t||"family"===t||"weight"===t||"stretch"===t||"variant"===t||"style"===t?this.attr("font-"+t,e):this.attr(t,e)}});A("Element",["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchleave","touchend","touchcancel","contextmenu","wheel","pointerdown","pointermove","pointerup","pointerleave","pointercancel"].reduce((function(t,e){return t[e]=function(t){return null===t?this.off(e):this.on(e,t),this},t}),{})),A("Element",{untransform:function(){return this.attr("transform",null)},matrixify:function(){const t=(this.attr("transform")||"").split(st).slice(0,-1).map((function(t){const e=t.trim().split("(");return[e[0],e[1].split(dt).map((function(t){return parseFloat(t)}))]})).reverse().reduce((function(t,e){return"matrix"===e[0]?t.lmultiply(vt.fromArray(e[1])):t[e[0]].apply(t,e[1])}),new vt);return t},toParent:function(t,e){if(this===t)return this;if(X(this.node))return this.addTo(t,e);const i=this.screenCTM(),a=t.screenCTM().inverse();return this.addTo(t,e).untransform().transform(a.multiply(i)),this},toRoot:function(t){return this.toParent(this.root(),t)},transform:function(t,e){if(null==t||"string"==typeof t){const e=new vt(this).decompose();return null==t?e:e[t]}vt.isMatrixLike(t)||(t={...t,origin:T(t,this)});const i=new vt(!0===e?this:e||!1).transform(t);return this.attr("transform",i)}});class Vt extends Gt{flatten(){return this.each((function(){if(this instanceof Vt)return this.flatten().ungroup()})),this}ungroup(t=this.parent(),e=t.index(this)){return e=-1===e?t.children().length:e,this.each((function(i,a){return a[a.length-i-1].toParent(t,e)})),this.remove()}}q(Vt,"Container");class Ut extends Vt{constructor(t,e=t){super(G("defs",t),e)}flatten(){return this}ungroup(){return this}}q(Ut,"Defs");class qt extends Gt{}function Zt(t){return this.attr("rx",t)}function $t(t){return this.attr("ry",t)}function Jt(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())}function Qt(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())}function Kt(t){return this.attr("cx",t)}function te(t){return this.attr("cy",t)}function ee(t){return null==t?2*this.rx():this.rx(new _t(t).divide(2))}function ie(t){return null==t?2*this.ry():this.ry(new _t(t).divide(2))}q(qt,"Shape");var ae=Object.freeze({__proto__:null,cx:Kt,cy:te,height:ie,rx:Zt,ry:$t,width:ee,x:Jt,y:Qt});class se extends qt{constructor(t,e=t){super(G("ellipse",t),e)}size(t,e){const i=I(this,t,e);return this.rx(new _t(i.width).divide(2)).ry(new _t(i.height).divide(2))}}Q(se,ae),A("Container",{ellipse:K((function(t=0,e=t){return this.put(new se).size(t,e).move(0,0)}))}),q(se,"Ellipse");class re extends Bt{constructor(t=O.document.createDocumentFragment()){super(t)}xml(t,e,i){if("boolean"==typeof t&&(i=e,e=t,t=null),null==t||"function"==typeof t){const t=new Bt(W("wrapper",i));return t.add(this.node.cloneNode(!0)),t.xml(!1,i)}return super.xml(t,!1,i)}}function ne(t,e){return"radialGradient"===(this._element||this).type?this.attr({fx:new _t(t),fy:new _t(e)}):this.attr({x1:new _t(t),y1:new _t(e)})}function oe(t,e){return"radialGradient"===(this._element||this).type?this.attr({cx:new _t(t),cy:new _t(e)}):this.attr({x2:new _t(t),y2:new _t(e)})}q(re,"Fragment");var le=Object.freeze({__proto__:null,from:ne,to:oe});class he extends Vt{constructor(t,e){super(G(t+"Gradient","string"==typeof t?null:t),e)}attr(t,e,i){return"transform"===t&&(t="gradientTransform"),super.attr(t,e,i)}bbox(){return new kt}targets(){return Lt("svg [fill*="+this.id()+"]")}toString(){return this.url()}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}url(){return"url(#"+this.id()+")"}}Q(he,le),A({Container:{gradient(...t){return this.defs().gradient(...t)}},Defs:{gradient:K((function(t,e){return this.put(new he(t)).update(e)}))}}),q(he,"Gradient");class ce extends Vt{constructor(t,e=t){super(G("pattern",t),e)}attr(t,e,i){return"transform"===t&&(t="patternTransform"),super.attr(t,e,i)}bbox(){return new kt}targets(){return Lt("svg [fill*="+this.id()+"]")}toString(){return this.url()}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}url(){return"url(#"+this.id()+")"}}A({Container:{pattern(...t){return this.defs().pattern(...t)}},Defs:{pattern:K((function(t,e,i){return this.put(new ce).update(i).attr({x:0,y:0,width:t,height:e,patternUnits:"userSpaceOnUse"})}))}}),q(ce,"Pattern");let de=class extends qt{constructor(t,e=t){super(G("image",t),e)}load(t,e){if(!t)return this;const i=new O.window.Image;return zt(i,"load",(function(t){const a=this.parent(ce);0===this.width()&&0===this.height()&&this.size(i.width,i.height),a instanceof ce&&0===a.width()&&0===a.height()&&a.size(this.width(),this.height()),"function"==typeof e&&e.call(this,t)}),this),zt(i,"load error",(function(){Xt(i)})),this.attr("href",i.src=t,H)}};var ue;ue=function(t,e,i){return"fill"!==t&&"stroke"!==t||ct.test(e)&&(e=i.root().defs().image(e)),e instanceof de&&(e=i.root().defs().pattern(0,0,(t=>{t.add(e)}))),e},Wt.push(ue),A({Container:{image:K((function(t,e){return this.put(new de).size(0,0).load(t,e)}))}}),q(de,"Image");class ge extends Dt{bbox(){let t=-1/0,e=-1/0,i=1/0,a=1/0;return this.forEach((function(s){t=Math.max(s[0],t),e=Math.max(s[1],e),i=Math.min(s[0],i),a=Math.min(s[1],a)})),new kt(i,a,t-i,e-a)}move(t,e){const i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(let i=this.length-1;i>=0;i--)this[i]=[this[i][0]+t,this[i][1]+e];return this}parse(t=[0,0]){const e=[];(t=t instanceof Array?Array.prototype.concat.apply([],t):t.trim().split(dt).map(parseFloat)).length%2!=0&&t.pop();for(let i=0,a=t.length;i=0;i--)a.width&&(this[i][0]=(this[i][0]-a.x)*t/a.width+a.x),a.height&&(this[i][1]=(this[i][1]-a.y)*e/a.height+a.y);return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const t=[];for(let e=0,i=this.length;e":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)},bezier:function(t,e,i,a){return function(s){return s<0?t>0?e/t*s:i>0?a/i*s:0:s>1?i<1?(1-a)/(1-i)*s+(a-i)/(1-i):t<1?(1-e)/(1-t)*s+(e-t)/(1-t):1:3*s*(1-s)**2*e+3*s**2*(1-s)*a+s**3}},steps:function(t,e="end"){e=e.split("-").reverse()[0];let i=t;return"none"===e?--i:"both"===e&&++i,(a,s=!1)=>{let r=Math.floor(a*t);const n=a*r%1==0;return"start"!==e&&"both"!==e||++r,s&&n&&--r,a>=0&&r<0&&(r=0),a<=1&&r>i&&(r=i),r/i}}};class ye{done(){return!1}}class we extends ye{constructor(t=Ht){super(),this.ease=ve[t]||t}step(t,e,i){return"number"!=typeof t?i<1?t:e:t+(e-t)*this.ease(i)}}class ke extends ye{constructor(t){super(),this.stepper=t}done(t){return t.done}step(t,e,i,a){return this.stepper(t,e,i,a)}}function Ae(){const t=(this._duration||500)/1e3,e=this._overshoot||0,i=Math.PI,a=Math.log(e/100+1e-10),s=-a/Math.sqrt(i*i+a*a),r=3.9/(s*t);this.d=2*s*r,this.k=r*r}Q(class extends ke{constructor(t=500,e=0){super(),this.duration(t).overshoot(e)}step(t,e,i,a){if("string"==typeof t)return t;if(a.done=i===1/0,i===1/0)return e;if(0===i)return t;i>100&&(i=16),i/=1e3;const s=a.velocity||0,r=-this.d*s-this.k*(t-e),n=t+s*i+r*i*i/2;return a.velocity=s+r*i,a.done=Math.abs(e-n)+Math.abs(s)<.002,a.done?e:n}},{duration:me("_duration",Ae),overshoot:me("_overshoot",Ae)});Q(class extends ke{constructor(t=.1,e=.01,i=0,a=1e3){super(),this.p(t).i(e).d(i).windup(a)}step(t,e,i,a){if("string"==typeof t)return t;if(a.done=i===1/0,i===1/0)return e;if(0===i)return t;const s=e-t;let r=(a.integral||0)+s*i;const n=(s-(a.error||0))/i,o=this._windup;return!1!==o&&(r=Math.max(-o,Math.min(r,o))),a.error=s,a.integral=r,a.done=Math.abs(s)<.001,a.done?e:t+(this.P*s+this.I*r+this.D*n)}},{windup:me("_windup"),p:me("P"),i:me("I"),d:me("D")});const Ce={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0},Se={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},S:function(t,e){return e.x=t[2],e.y=t[3],["S",t[0],t[1],t[2],t[3]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},T:function(t,e){return e.x=t[0],e.y=t[1],["T",t[0],t[1]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]},A:function(t,e){return e.x=t[5],e.y=t[6],["A",t[0],t[1],t[2],t[3],t[4],t[5],t[6]]}},Le="mlhvqtcsaz".split("");for(let t=0,e=Le.length;t=0;a--)i=this[a][0],"M"===i||"L"===i||"T"===i?(this[a][1]+=t,this[a][2]+=e):"H"===i?this[a][1]+=t:"V"===i?this[a][1]+=e:"C"===i||"S"===i||"Q"===i?(this[a][1]+=t,this[a][2]+=e,this[a][3]+=t,this[a][4]+=e,"C"===i&&(this[a][5]+=t,this[a][6]+=e)):"A"===i&&(this[a][6]+=t,this[a][7]+=e);return this}parse(t="M0 0"){return Array.isArray(t)&&(t=Array.prototype.concat.apply([],t).toString()),function(t,e=!0){let i=0,a="";const s={segment:[],inNumber:!1,number:"",lastToken:"",inSegment:!1,segments:[],pointSeen:!1,hasExponent:!1,absolute:e,p0:new bt,p:new bt};for(;s.lastToken=a,a=t.charAt(i++);)if(s.inSegment||!Pe(s,a))if("."!==a)if(isNaN(parseInt(a)))if(Re.has(a))s.inNumber&&Ie(s,!1);else if("-"!==a&&"+"!==a)if("E"!==a.toUpperCase()){if(ut.test(a)){if(s.inNumber)Ie(s,!1);else{if(!Me(s))throw new Error("parser Error");Te(s)}--i}}else s.number+=a,s.hasExponent=!0;else{if(s.inNumber&&!Xe(s)){Ie(s,!1),--i;continue}s.number+=a,s.inNumber=!0}else{if("0"===s.number||ze(s)){s.inNumber=!0,s.number=a,Ie(s,!0);continue}s.inNumber=!0,s.number+=a}else{if(s.pointSeen||s.hasExponent){Ie(s,!1),--i;continue}s.inNumber=!0,s.pointSeen=!0,s.number+=a}return s.inNumber&&Ie(s,!1),s.inSegment&&Me(s)&&Te(s),s.segments}(t)}size(t,e){const i=this.bbox();let a,s;for(i.width=0===i.width?1:i.width,i.height=0===i.height?1:i.height,a=this.length-1;a>=0;a--)s=this[a][0],"M"===s||"L"===s||"T"===s?(this[a][1]=(this[a][1]-i.x)*t/i.width+i.x,this[a][2]=(this[a][2]-i.y)*e/i.height+i.y):"H"===s?this[a][1]=(this[a][1]-i.x)*t/i.width+i.x:"V"===s?this[a][1]=(this[a][1]-i.y)*e/i.height+i.y:"C"===s||"S"===s||"Q"===s?(this[a][1]=(this[a][1]-i.x)*t/i.width+i.x,this[a][2]=(this[a][2]-i.y)*e/i.height+i.y,this[a][3]=(this[a][3]-i.x)*t/i.width+i.x,this[a][4]=(this[a][4]-i.y)*e/i.height+i.y,"C"===s&&(this[a][5]=(this[a][5]-i.x)*t/i.width+i.x,this[a][6]=(this[a][6]-i.y)*e/i.height+i.y)):"A"===s&&(this[a][1]=this[a][1]*t/i.width,this[a][2]=this[a][2]*e/i.height,this[a][6]=(this[a][6]-i.x)*t/i.width+i.x,this[a][7]=(this[a][7]-i.y)*e/i.height+i.y);return this}toString(){return function(t){let e="";for(let i=0,a=t.length;i{const e=typeof t;return"number"===e?_t:"string"===e?xt.isColor(t)?xt:dt.test(t)?ut.test(t)?Ee:Dt:tt.test(t)?_t:Oe:Ne.indexOf(t.constructor)>-1?t.constructor:Array.isArray(t)?Dt:"object"===e?_e:Oe};class He{constructor(t){this._stepper=t||new we("-"),this._from=null,this._to=null,this._type=null,this._context=null,this._morphObj=null}at(t){return this._morphObj.morph(this._from,this._to,t,this._stepper,this._context)}done(){return this._context.map(this._stepper.done).reduce((function(t,e){return t&&e}),!0)}from(t){return null==t?this._from:(this._from=this._set(t),this)}stepper(t){return null==t?this._stepper:(this._stepper=t,this)}to(t){return null==t?this._to:(this._to=this._set(t),this)}type(t){return null==t?this._type:(this._type=t,this)}_set(t){this._type||this.type(Ye(t));let e=new this._type(t);return this._type===xt&&(e=this._to?e[this._to[4]]():this._from?e[this._from[4]]():e),this._type===_e&&(e=this._to?e.align(this._to):this._from?e.align(this._from):e),e=e.toConsumable(),this._morphObj=this._morphObj||new this._type,this._context=this._context||Array.apply(null,Array(e.length)).map(Object).map((function(t){return t.done=!0,t})),e}}class Oe{constructor(...t){this.init(...t)}init(t){return t=Array.isArray(t)?t[0]:t,this.value=t,this}toArray(){return[this.value]}valueOf(){return this.value}}class Fe{constructor(...t){this.init(...t)}init(t){return Array.isArray(t)&&(t={scaleX:t[0],scaleY:t[1],shear:t[2],rotate:t[3],translateX:t[4],translateY:t[5],originX:t[6],originY:t[7]}),Object.assign(this,Fe.defaults,t),this}toArray(){const t=this;return[t.scaleX,t.scaleY,t.shear,t.rotate,t.translateX,t.translateY,t.originX,t.originY]}}Fe.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const De=(t,e)=>t[0]e[0]?1:0;class _e{constructor(...t){this.init(...t)}align(t){const e=this.values;for(let i=0,a=e.length;it.concat(e)),[]),this}toArray(){return this.values}valueOf(){const t={},e=this.values;for(;e.length;){const i=e.shift(),a=e.shift(),s=e.shift(),r=e.splice(0,s);t[i]=new a(r)}return t}}const Ne=[Oe,Fe,_e];class We extends qt{constructor(t,e=t){super(G("path",t),e)}array(){return this._array||(this._array=new Ee(this.attr("d")))}clear(){return delete this._array,this}height(t){return null==t?this.bbox().height:this.size(this.bbox().width,t)}move(t,e){return this.attr("d",this.array().move(t,e))}plot(t){return null==t?this.array():this.clear().attr("d","string"==typeof t?t:this._array=new Ee(t))}size(t,e){const i=I(this,t,e);return this.attr("d",this.array().size(i.width,i.height))}width(t){return null==t?this.bbox().width:this.size(t,this.bbox().height)}x(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)}y(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)}}We.prototype.MorphArray=Ee,A({Container:{path:K((function(t){return this.put(new We).plot(t||new Ee)}))}}),q(We,"Path");var Be=Object.freeze({__proto__:null,array:function(){return this._array||(this._array=new ge(this.attr("points")))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr("points",this.array().move(t,e))},plot:function(t){return null==t?this.array():this.clear().attr("points","string"==typeof t?t:this._array=new ge(t))},size:function(t,e){const i=I(this,t,e);return this.attr("points",this.array().size(i.width,i.height))}});class Ge extends qt{constructor(t,e=t){super(G("polygon",t),e)}}A({Container:{polygon:K((function(t){return this.put(new Ge).plot(t||new ge)}))}}),Q(Ge,fe),Q(Ge,Be),q(Ge,"Polygon");class je extends qt{constructor(t,e=t){super(G("polyline",t),e)}}A({Container:{polyline:K((function(t){return this.put(new je).plot(t||new ge)}))}}),Q(je,fe),Q(je,Be),q(je,"Polyline");class Ve extends qt{constructor(t,e=t){super(G("rect",t),e)}}Q(Ve,{rx:Zt,ry:$t}),A({Container:{rect:K((function(t,e){return this.put(new Ve).size(t,e)}))}}),q(Ve,"Rect");class Ue{constructor(){this._first=null,this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(t){const e=void 0!==t.next?t:{value:t,next:null,prev:null};return this._last?(e.prev=this._last,this._last.next=e,this._last=e):(this._last=e,this._first=e),e}remove(t){t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t===this._last&&(this._last=t.prev),t===this._first&&(this._first=t.next),t.prev=null,t.next=null}shift(){const t=this._first;return t?(this._first=t.next,this._first&&(this._first.prev=null),this._last=this._first?this._last:null,t.value):null}}const qe={nextDraw:null,frames:new Ue,timeouts:new Ue,immediates:new Ue,timer:()=>O.window.performance||O.window.Date,transforms:[],frame(t){const e=qe.frames.push({run:t});return null===qe.nextDraw&&(qe.nextDraw=O.window.requestAnimationFrame(qe._draw)),e},timeout(t,e){e=e||0;const i=qe.timer().now()+e,a=qe.timeouts.push({run:t,time:i});return null===qe.nextDraw&&(qe.nextDraw=O.window.requestAnimationFrame(qe._draw)),a},immediate(t){const e=qe.immediates.push(t);return null===qe.nextDraw&&(qe.nextDraw=O.window.requestAnimationFrame(qe._draw)),e},cancelFrame(t){null!=t&&qe.frames.remove(t)},clearTimeout(t){null!=t&&qe.timeouts.remove(t)},cancelImmediate(t){null!=t&&qe.immediates.remove(t)},_draw(t){let e=null;const i=qe.timeouts.last();for(;(e=qe.timeouts.shift())&&(t>=e.time?e.run():qe.timeouts.push(e),e!==i););let a=null;const s=qe.frames.last();for(;a!==s&&(a=qe.frames.shift());)a.run(t);let r=null;for(;r=qe.immediates.shift();)r();qe.nextDraw=qe.timeouts.first()||qe.frames.first()?O.window.requestAnimationFrame(qe._draw):null}},Ze=function(t){const e=t.start,i=t.runner.duration();return{start:e,duration:i,end:e+i,runner:t.runner}},$e=function(){const t=O.window;return(t.performance||t.Date).now()};class Je extends Rt{constructor(t=$e){super(),this._timeSource=t,this.terminate()}active(){return!!this._nextFrame}finish(){return this.time(this.getEndTimeOfTimeline()+1),this.pause()}getEndTime(){const t=this.getLastRunnerInfo(),e=t?t.runner.duration():0;return(t?t.start:this._time)+e}getEndTimeOfTimeline(){const t=this._runners.map((t=>t.start+t.runner.duration()));return Math.max(0,...t)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(t){return this._runners[this._runnerIds.indexOf(t)]||null}pause(){return this._paused=!0,this._continue()}persist(t){return null==t?this._persist:(this._persist=t,this)}play(){return this._paused=!1,this.updateTime()._continue()}reverse(t){const e=this.speed();if(null==t)return this.speed(-e);const i=Math.abs(e);return this.speed(t?-i:i)}schedule(t,e,i){if(null==t)return this._runners.map(Ze);let a=0;const s=this.getEndTime();if(e=e||0,null==i||"last"===i||"after"===i)a=s;else if("absolute"===i||"start"===i)a=e,e=0;else if("now"===i)a=this._time;else if("relative"===i){const i=this.getRunnerInfoById(t.id);i&&(a=i.start+e,e=0)}else{if("with-last"!==i)throw new Error('Invalid value for the "when" parameter');{const t=this.getLastRunnerInfo();a=t?t.start:this._time}}t.unschedule(),t.timeline(this);const r=t.persist(),n={persist:null===r?this._persist:r,start:a+e,runner:t};return this._lastRunnerId=t.id,this._runners.push(n),this._runners.sort(((t,e)=>t.start-e.start)),this._runnerIds=this._runners.map((t=>t.runner.id)),this.updateTime()._continue(),this}seek(t){return this.time(this._time+t)}source(t){return null==t?this._timeSource:(this._timeSource=t,this)}speed(t){return null==t?this._speed:(this._speed=t,this)}stop(){return this.time(0),this.pause()}time(t){return null==t?this._time:(this._time=t,this._continue(!0))}unschedule(t){const e=this._runnerIds.indexOf(t.id);return e<0||(this._runners.splice(e,1),this._runnerIds.splice(e,1),t.timeline(null)),this}updateTime(){return this.active()||(this._lastSourceTime=this._timeSource()),this}_continue(t=!1){return qe.cancelFrame(this._nextFrame),this._nextFrame=null,t?this._stepImmediate():(this._paused||(this._nextFrame=qe.frame(this._step)),this)}_stepFn(t=!1){const e=this._timeSource();let i=e-this._lastSourceTime;t&&(i=0);const a=this._speed*i+(this._time-this._lastStepTime);this._lastSourceTime=e,t||(this._time+=a,this._time=this._time<0?0:this._time),this._lastStepTime=this._time,this.fire("time",this._time);for(let t=this._runners.length;t--;){const e=this._runners[t],i=e.runner;this._time-e.start<=0&&i.reset()}let s=!1;for(let t=0,e=this._runners.length;t0?this._continue():(this.pause(),this.fire("finished")),this}terminate(){this._startTime=0,this._speed=1,this._persist=0,this._nextFrame=null,this._paused=!0,this._runners=[],this._runnerIds=[],this._lastRunnerId=-1,this._time=0,this._lastSourceTime=0,this._lastStepTime=0,this._step=this._stepFn.bind(this,!1),this._stepImmediate=this._stepFn.bind(this,!0)}}A({Element:{timeline:function(t){return null==t?(this._timeline=this._timeline||new Je,this._timeline):(this._timeline=t,this)}}});class Qe extends Rt{constructor(t){super(),this.id=Qe.id++,t="function"==typeof(t=null==t?Yt:t)?new ke(t):t,this._element=null,this._timeline=null,this.done=!1,this._queue=[],this._duration="number"==typeof t&&t,this._isDeclarative=t instanceof ke,this._stepper=this._isDeclarative?t:new we,this._history={},this.enabled=!0,this._time=0,this._lastTime=0,this._reseted=!0,this.transforms=new vt,this.transformId=1,this._haveReversed=!1,this._reverse=!1,this._loopsDone=0,this._swing=!1,this._wait=0,this._times=1,this._frameId=null,this._persist=!!this._isDeclarative||null}static sanitise(t,e,i){let a=1,s=!1,r=0;return e=e??Ot,i=i||"last","object"!=typeof(t=t??Yt)||t instanceof ye||(e=t.delay??e,i=t.when??i,s=t.swing||s,a=t.times??a,r=t.wait??r,t=t.duration??Yt),{duration:t,delay:e,swing:s,times:a,wait:r,when:i}}active(t){return null==t?this.enabled:(this.enabled=t,this)}addTransform(t){return this.transforms.lmultiplyO(t),this}after(t){return this.on("finished",t)}animate(t,e,i){const a=Qe.sanitise(t,e,i),s=new Qe(a.duration);return this._timeline&&s.timeline(this._timeline),this._element&&s.element(this._element),s.loop(a).schedule(a.delay,a.when)}clearTransform(){return this.transforms=new vt,this}clearTransformsFromQueue(){this.done&&this._timeline&&this._timeline._runnerIds.includes(this.id)||(this._queue=this._queue.filter((t=>!t.isTransform)))}delay(t){return this.animate(0,t)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(t){return this.queue(null,t)}ease(t){return this._stepper=new we(t),this}element(t){return null==t?this._element:(this._element=t,t._prepareRunner(),this)}finish(){return this.step(1/0)}loop(t,e,i){return"object"==typeof t&&(e=t.swing,i=t.wait,t=t.times),this._times=t||1/0,this._swing=e||!1,this._wait=i||0,!0===this._times&&(this._times=1/0),this}loops(t){const e=this._duration+this._wait;if(null==t){const t=Math.floor(this._time/e),i=(this._time-t*e)/this._duration;return Math.min(t+i,this._times)}const i=t%1,a=e*Math.floor(t)+this._duration*i;return this.time(a)}persist(t){return null==t?this._persist:(this._persist=t,this)}position(t){const e=this._time,i=this._duration,a=this._wait,s=this._times,r=this._swing,n=this._reverse;let o;if(null==t){const t=function(t){const e=r*Math.floor(t%(2*(a+i))/(a+i)),s=e&&!n||!e&&n,o=Math.pow(-1,s)*(t%(a+i))/i+s;return Math.max(Math.min(o,1),0)},l=s*(a+i)-a;return o=e<=0?Math.round(t(1e-5)):e=0;this._lastPosition=e;const a=this.duration(),s=this._lastTime<=0&&this._time>0,r=this._lastTime=a;this._lastTime=this._time,s&&this.fire("start",this);const n=this._isDeclarative;this.done=!n&&!r&&this._time>=a,this._reseted=!1;let o=!1;return(i||n)&&(this._initialise(i),this.transforms=new vt,o=this._run(n?t:e),this.fire("step",this)),this.done=this.done||o&&n,r&&this.fire("finished",this),this}time(t){if(null==t)return this._time;const e=t-this._time;return this.step(e),this}timeline(t){return void 0===t?this._timeline:(this._timeline=t,this)}unschedule(){const t=this.timeline();return t&&t.unschedule(this),this}_initialise(t){if(t||this._isDeclarative)for(let e=0,i=this._queue.length;et.lmultiplyO(e),ei=t=>t.transforms;function ii(){const t=this._transformationRunners.runners.map(ei).reduce(ti,new vt);this.transform(t),this._transformationRunners.merge(),1===this._transformationRunners.length()&&(this._frameId=null)}class ai{constructor(){this.runners=[],this.ids=[]}add(t){if(this.runners.includes(t))return;const e=t.id+1;return this.runners.push(t),this.ids.push(e),this}clearBefore(t){const e=this.ids.indexOf(t+1)||1;return this.ids.splice(0,e,0),this.runners.splice(0,e,new Ke).forEach((t=>t.clearTransformsFromQueue())),this}edit(t,e){const i=this.ids.indexOf(t+1);return this.ids.splice(i,1,t+1),this.runners.splice(i,1,e),this}getByID(t){return this.runners[this.ids.indexOf(t+1)]}length(){return this.ids.length}merge(){let t=null;for(let e=0;ee.id<=t.id)).map(ei).reduce(ti,new vt)},_addRunner(t){this._transformationRunners.add(t),qe.cancelImmediate(this._frameId),this._frameId=qe.immediate(ii.bind(this))},_prepareRunner(){null==this._frameId&&(this._transformationRunners=(new ai).add(new Ke(new vt(this))))}}});Q(Qe,{attr(t,e){return this.styleAttr("attr",t,e)},css(t,e){return this.styleAttr("css",t,e)},styleAttr(t,e,i){if("string"==typeof e)return this.styleAttr(t,{[e]:i});let a=e;if(this._tryRetarget(t,a))return this;let s=new He(this._stepper).to(a),r=Object.keys(a);return this.queue((function(){s=s.from(this.element()[t](r))}),(function(e){return this.element()[t](s.at(e).valueOf()),s.done()}),(function(e){const i=Object.keys(e),n=(o=r,i.filter((t=>!o.includes(t))));var o;if(n.length){const e=this.element()[t](n),i=new _e(s.from()).valueOf();Object.assign(i,e),s.from(i)}const l=new _e(s.to()).valueOf();Object.assign(l,e),s.to(l),r=i,a=e})),this._rememberMorpher(t,s),this},zoom(t,e){if(this._tryRetarget("zoom",t,e))return this;let i=new He(this._stepper).to(new _t(t));return this.queue((function(){i=i.from(this.element().zoom())}),(function(t){return this.element().zoom(i.at(t),e),i.done()}),(function(t,a){e=a,i.to(t)})),this._rememberMorpher("zoom",i),this},transform(t,e,i){if(e=t.relative||e,this._isDeclarative&&!e&&this._tryRetarget("transform",t))return this;const a=vt.isMatrixLike(t);i=null!=t.affine?t.affine:null!=i?i:!a;const s=new He(this._stepper).type(i?Fe:vt);let r,n,o,l,h;return this.queue((function(){n=n||this.element(),r=r||T(t,n),h=new vt(e?void 0:n),n._addRunner(this),e||n._clearTransformRunnersBefore(this)}),(function(c){e||this.clearTransform();const{x:d,y:u}=new bt(r).transform(n._currentTransform(this));let g=new vt({...t,origin:[d,u]}),p=this._isDeclarative&&o?o:h;if(i){g=g.decompose(d,u),p=p.decompose(d,u);const t=g.rotate,e=p.rotate,i=[t-360,t,t+360],a=i.map((t=>Math.abs(t-e))),s=Math.min(...a),r=a.indexOf(s);g.rotate=i[r]}e&&(a||(g.rotate=t.rotate||0),this._isDeclarative&&l&&(p.rotate=l)),s.from(p),s.to(g);const f=s.at(c);return l=f.rotate,o=new vt(f),this.addTransform(o),n._addRunner(this),s.done()}),(function(e){(e.origin||"center").toString()!==(t.origin||"center").toString()&&(r=T(e,n)),t={...e,origin:r}}),!0),this._isDeclarative&&this._rememberMorpher("transform",s),this},x(t){return this._queueNumber("x",t)},y(t){return this._queueNumber("y",t)},ax(t){return this._queueNumber("ax",t)},ay(t){return this._queueNumber("ay",t)},dx(t=0){return this._queueNumberDelta("x",t)},dy(t=0){return this._queueNumberDelta("y",t)},dmove(t,e){return this.dx(t).dy(e)},_queueNumberDelta(t,e){if(e=new _t(e),this._tryRetarget(t,e))return this;const i=new He(this._stepper).to(e);let a=null;return this.queue((function(){a=this.element()[t](),i.from(a),i.to(a+e)}),(function(e){return this.element()[t](i.at(e)),i.done()}),(function(t){i.to(a+new _t(t))})),this._rememberMorpher(t,i),this},_queueObject(t,e){if(this._tryRetarget(t,e))return this;const i=new He(this._stepper).to(e);return this.queue((function(){i.from(this.element()[t]())}),(function(e){return this.element()[t](i.at(e)),i.done()})),this._rememberMorpher(t,i),this},_queueNumber(t,e){return this._queueObject(t,new _t(e))},cx(t){return this._queueNumber("cx",t)},cy(t){return this._queueNumber("cy",t)},move(t,e){return this.x(t).y(e)},amove(t,e){return this.ax(t).ay(e)},center(t,e){return this.cx(t).cy(e)},size(t,e){let i;return t&&e||(i=this._element.bbox()),t||(t=i.width/i.height*e),e||(e=i.height/i.width*t),this.width(t).height(e)},width(t){return this._queueNumber("width",t)},height(t){return this._queueNumber("height",t)},plot(t,e,i,a){if(4===arguments.length)return this.plot([t,e,i,a]);if(this._tryRetarget("plot",t))return this;const s=new He(this._stepper).type(this._element.MorphArray).to(t);return this.queue((function(){s.from(this._element.array())}),(function(t){return this._element.plot(s.at(t)),s.done()})),this._rememberMorpher("plot",s),this},leading(t){return this._queueNumber("leading",t)},viewbox(t,e,i,a){return this._queueObject("viewbox",new kt(t,e,i,a))},update(t){return"object"!=typeof t?this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]}):(null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",t.offset),this)}}),Q(Qe,{rx:Zt,ry:$t,from:ne,to:oe}),q(Qe,"Runner");class si extends Vt{constructor(t,e=t){super(G("svg",t),e),this.namespace()}defs(){return this.isRoot()?V(this.node.querySelector("defs"))||this.put(new Ut):this.root().defs()}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof O.window.SVGElement)&&"#document-fragment"!==this.node.parentNode.nodeName}namespace(){return this.isRoot()?this.attr({xmlns:E,version:"1.1"}).attr("xmlns:xlink",H,Y):this.root().namespace()}removeNamespace(){return this.attr({xmlns:null,version:null}).attr("xmlns:xlink",null,Y).attr("xmlns:svgjs",null,Y)}root(){return this.isRoot()?this:super.root()}}A({Container:{nested:K((function(){return this.put(new si)}))}}),q(si,"Svg",!0);let ri=class extends Vt{constructor(t,e=t){super(G("symbol",t),e)}};A({Container:{symbol:K((function(){return this.put(new ri)}))}}),q(ri,"Symbol");var ni=Object.freeze({__proto__:null,amove:function(t,e){return this.ax(t).ay(e)},ax:function(t){return this.attr("x",t)},ay:function(t){return this.attr("y",t)},build:function(t){return this._build=!!t,this},center:function(t,e,i=this.bbox()){return this.cx(t,i).cy(e,i)},cx:function(t,e=this.bbox()){return null==t?e.cx:this.attr("x",this.attr("x")+t-e.cx)},cy:function(t,e=this.bbox()){return null==t?e.cy:this.attr("y",this.attr("y")+t-e.cy)},length:function(){return this.node.getComputedTextLength()},move:function(t,e,i=this.bbox()){return this.x(t,i).y(e,i)},plain:function(t){return!1===this._build&&this.clear(),this.node.appendChild(O.document.createTextNode(t)),this},x:function(t,e=this.bbox()){return null==t?e.x:this.attr("x",this.attr("x")+t-e.x)},y:function(t,e=this.bbox()){return null==t?e.y:this.attr("y",this.attr("y")+t-e.y)}});class oi extends qt{constructor(t,e=t){super(G("text",t),e),this.dom.leading=this.dom.leading??new _t(1.3),this._rebuild=!0,this._build=!1}leading(t){return null==t?this.dom.leading:(this.dom.leading=new _t(t),this.rebuild())}rebuild(t){if("boolean"==typeof t&&(this._rebuild=t),this._rebuild){const t=this;let e=0;const i=this.dom.leading;this.each((function(a){if(X(this.node))return;const s=O.window.getComputedStyle(this.node).getPropertyValue("font-size"),r=i*new _t(s);this.dom.newLined&&(this.attr("x",t.attr("x")),"\n"===this.text()?e+=r:(this.attr("dy",a?r+e:0),e=0))})),this.fire("rebuild")}return this}setData(t){return this.dom=t,this.dom.leading=new _t(t.leading||1.3),this}writeDataToDom(){return R(this,this.dom,{leading:1.3}),this}text(t){if(void 0===t){const e=this.node.childNodes;let i=0;t="";for(let a=0,s=e.length;a{let a;try{a=i.node instanceof F().SVGSVGElement?new kt(i.attr(["x","y","width","height"])):i.bbox()}catch(t){return}const s=new vt(i),r=s.translate(t,e).transform(s.inverse()),n=new bt(a.x,a.y).transform(r);i.move(n.x,n.y)})),this},dx:function(t){return this.dmove(t,0)},dy:function(t){return this.dmove(0,t)},height:function(t,e=this.bbox()){return null==t?e.height:this.size(e.width,t,e)},move:function(t=0,e=0,i=this.bbox()){const a=t-i.x,s=e-i.y;return this.dmove(a,s)},size:function(t,e,i=this.bbox()){const a=I(this,t,e,i),s=a.width/i.width,r=a.height/i.height;return this.children().forEach((t=>{const e=new bt(i).transform(new vt(t).inverse());t.scale(s,r,e.x,e.y)})),this},width:function(t,e=this.bbox()){return null==t?e.width:this.size(t,e.height,e)},x:function(t,e=this.bbox()){return null==t?e.x:this.move(t,e.y,e)},y:function(t,e=this.bbox()){return null==t?e.y:this.move(e.x,t,e)}});class gi extends Vt{constructor(t,e=t){super(G("g",t),e)}}Q(gi,ui),A({Container:{group:K((function(){return this.put(new gi)}))}}),q(gi,"G");class pi extends Vt{constructor(t,e=t){super(G("a",t),e)}target(t){return this.attr("target",t)}to(t){return this.attr("href",t,H)}}Q(pi,ui),A({Container:{link:K((function(t){return this.put(new pi).to(t)}))},Element:{unlink(){const t=this.linker();if(!t)return this;const e=t.parent();if(!e)return this.remove();const i=e.index(t);return e.add(this,i),t.remove(),this},linkTo(t){let e=this.linker();return e||(e=new pi,this.wrap(e)),"function"==typeof t?t.call(e,e):e.to(t),this},linker(){const t=this.parent();return t&&"a"===t.node.nodeName.toLowerCase()?t:null}}}),q(pi,"A");class fi extends Vt{constructor(t,e=t){super(G("mask",t),e)}remove(){return this.targets().forEach((function(t){t.unmask()})),super.remove()}targets(){return Lt("svg [mask*="+this.id()+"]")}}A({Container:{mask:K((function(){return this.defs().put(new fi)}))},Element:{masker(){return this.reference("mask")},maskWith(t){const e=t instanceof fi?t:this.parent().mask().add(t);return this.attr("mask","url(#"+e.id()+")")},unmask(){return this.attr("mask",null)}}}),q(fi,"Mask");class xi extends Gt{constructor(t,e=t){super(G("stop",t),e)}update(t){return("number"==typeof t||t instanceof _t)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",new _t(t.offset)),this}}A({Gradient:{stop:function(t,e,i){return this.put(new xi).update(t,e,i)}}}),q(xi,"Stop");class bi extends Gt{constructor(t,e=t){super(G("style",t),e)}addText(t=""){return this.node.textContent+=t,this}font(t,e,i={}){return this.rule("@font-face",{fontFamily:t,src:e,...i})}rule(t,e){return this.addText(function(t,e){if(!t)return"";if(!e)return t;let i=t+"{";for(const t in e)i+=t.replace(/([A-Z])/g,(function(t,e){return"-"+e.toLowerCase()}))+":"+e[t]+";";return i+="}",i}(t,e))}}A("Dom",{style(t,e){return this.put(new bi).rule(t,e)},fontface(t,e,i){return this.put(new bi).font(t,e,i)}}),q(bi,"Style");class mi extends oi{constructor(t,e=t){super(G("textPath",t),e)}array(){const t=this.track();return t?t.array():null}plot(t){const e=this.track();let i=null;return e&&(i=e.plot(t)),null==t?i:this}track(){return this.reference("href")}}A({Container:{textPath:K((function(t,e){return t instanceof oi||(t=this.text(t)),t.path(e)}))},Text:{path:K((function(t,e=!0){const i=new mi;let a;if(t instanceof We||(t=this.defs().path(t)),i.attr("href","#"+t,H),e)for(;a=this.node.firstChild;)i.node.appendChild(a);return this.put(i)})),textPath(){return this.findOne("textPath")}},Path:{text:K((function(t){return t instanceof oi||(t=(new oi).addTo(this.parent()).text(t)),t.path(this)})),targets(){return Lt("svg textPath").filter((t=>(t.attr("href")||"").includes(this.id())))}}}),mi.prototype.MorphArray=Ee,q(mi,"TextPath");class vi extends qt{constructor(t,e=t){super(G("use",t),e)}use(t,e){return this.attr("href",(e||"")+"#"+t,H)}}A({Container:{use:K((function(t,e){return this.put(new vi).use(t,e)}))}}),q(vi,"Use");const yi=B;Q([si,ri,de,ce,be],C("viewbox")),Q([xe,je,Ge,We],C("marker")),Q(oi,C("Text")),Q(We,C("Path")),Q(Ut,C("Defs")),Q([oi,li],C("Tspan")),Q([Ve,se,he,Qe],C("radius")),Q(Rt,C("EventTarget")),Q(Bt,C("Dom")),Q(Gt,C("Element")),Q(qt,C("Shape")),Q([Vt,re],C("Container")),Q(he,C("Gradient")),Q(Qe,C("Runner")),Ct.extend([...new Set(k)]),function(t=[]){Ne.push(...[].concat(t))}([_t,xt,kt,vt,Dt,ge,Ee,bt]),Q(Ne,{to(t){return(new He).type(this.constructor).from(this.toArray()).to(t)},fromArray(t){return this.init(t),this},toConsumable(){return this.toArray()},morph(t,e,i,a,s){return this.fromArray(t.map((function(t,r){return a.step(t,e[r],i,s[r],s)})))}});class wi extends Gt{constructor(t){super(G("filter",t),t),this.$source="SourceGraphic",this.$sourceAlpha="SourceAlpha",this.$background="BackgroundImage",this.$backgroundAlpha="BackgroundAlpha",this.$fill="FillPaint",this.$stroke="StrokePaint",this.$autoSetIn=!0}put(t,e){return!(t=super.put(t,e)).attr("in")&&this.$autoSetIn&&t.attr("in",this.$source),t.attr("result")||t.attr("result",t.id()),t}remove(){return this.targets().each("unfilter"),super.remove()}targets(){return Lt('svg [filter*="'+this.id()+'"]')}toString(){return"url(#"+this.id()+")"}}class ki extends Gt{constructor(t,e){super(t,e),this.result(this.id())}in(t){if(null==t){const t=this.attr("in");return this.parent()&&this.parent().find(`[result="${t}"]`)[0]||t}return this.attr("in",t)}result(t){return this.attr("result",t)}toString(){return this.result()}}const Ai=t=>function(...e){for(let i=t.length;i--;)null!=e[i]&&this.attr(t[i],e[i])},Ci={blend:Ai(["in","in2","mode"]),colorMatrix:Ai(["type","values"]),composite:Ai(["in","in2","operator"]),convolveMatrix:function(t){t=new Dt(t).toString(),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},diffuseLighting:Ai(["surfaceScale","lightingColor","diffuseConstant","kernelUnitLength"]),displacementMap:Ai(["in","in2","scale","xChannelSelector","yChannelSelector"]),dropShadow:Ai(["in","dx","dy","stdDeviation"]),flood:Ai(["flood-color","flood-opacity"]),gaussianBlur:function(t=0,e=t){this.attr("stdDeviation",t+" "+e)},image:function(t){this.attr("href",t,H)},morphology:Ai(["operator","radius"]),offset:Ai(["dx","dy"]),specularLighting:Ai(["surfaceScale","lightingColor","diffuseConstant","specularExponent","kernelUnitLength"]),tile:Ai([]),turbulence:Ai(["baseFrequency","numOctaves","seed","stitchTiles","type"])};["blend","colorMatrix","componentTransfer","composite","convolveMatrix","diffuseLighting","displacementMap","dropShadow","flood","gaussianBlur","image","merge","morphology","offset","specularLighting","tile","turbulence"].forEach((t=>{const e=P(t),i=Ci[t];wi[e+"Effect"]=class extends ki{constructor(t){super(G("fe"+e,t),t)}update(t){return i.apply(this,t),this}},wi.prototype[t]=K((function(t,...i){const a=new wi[e+"Effect"];return null==t?this.put(a):("function"==typeof t?t.call(a,a):i.unshift(t),this.put(a).update(i))}))})),Q(wi,{merge(t){const e=this.put(new wi.MergeEffect);if("function"==typeof t)return t.call(e,e),e;return(t instanceof Array?t:[...arguments]).forEach((t=>{t instanceof wi.MergeNode?e.put(t):e.mergeNode(t)})),e},componentTransfer(t={}){const e=this.put(new wi.ComponentTransferEffect);if("function"==typeof t)return t.call(e,e),e;if(!(t.r||t.g||t.b||t.a)){t={r:t,g:t,b:t,a:t}}for(const i in t)e.add(new(wi["Func"+i.toUpperCase()])(t[i]));return e}});["distantLight","pointLight","spotLight","mergeNode","FuncR","FuncG","FuncB","FuncA"].forEach((t=>{const e=P(t);wi[e]=class extends ki{constructor(t){super(G("fe"+e,t),t)}}}));["funcR","funcG","funcB","funcA"].forEach((function(t){const e=wi[P(t)],i=K((function(){return this.put(new e)}));wi.ComponentTransferEffect.prototype[t]=i}));["distantLight","pointLight","spotLight"].forEach((t=>{const e=wi[P(t)],i=K((function(){return this.put(new e)}));wi.DiffuseLightingEffect.prototype[t]=i,wi.SpecularLightingEffect.prototype[t]=i})),Q(wi.MergeEffect,{mergeNode(t){return this.put(new wi.MergeNode).attr("in",t)}}),Q(Ut,{filter:function(t){const e=this.put(new wi);return"function"==typeof t&&t.call(e,e),e}}),Q(Vt,{filter:function(t){return this.defs().filter(t)}}),Q(Gt,{filterWith:function(t){const e=t instanceof wi?t:this.defs().filter(t);return this.attr("filter",e)},unfilter:function(t){return this.attr("filter",null)},filterer(){return this.reference("filter")}});const Si={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},diffuseLighting:function(t,e,i,a){return this.parent()&&this.parent().diffuseLighting(t,i,a).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},dropShadow:function(t,e,i){return this.parent()&&this.parent().dropShadow(this,t,e,i).in(this)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(t){return t=t instanceof Array?t:[...t],this.parent()&&this.parent().merge(this,...t)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},specularLighting:function(t,e,i,a,s){return this.parent()&&this.parent().specularLighting(t,i,a,s).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};Q(ki,Si),Q(wi.MergeEffect,{in:function(t){return t instanceof wi.MergeNode?this.add(t,0):this.add((new wi.MergeNode).in(t),0),this}}),Q([wi.CompositeEffect,wi.BlendEffect,wi.DisplacementMapEffect],{in2:function(t){if(null==t){const t=this.attr("in2");return this.parent()&&this.parent().find(`[result="${t}"]`)[0]||t}return this.attr("in2",t)}}),wi.filter={sepiatone:[.343,.669,.119,0,0,.249,.626,.13,0,0,.172,.334,.111,0,0,0,0,0,1,0]};var Li=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new wi).size("120%","180%","-5%","-40%"),i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"applyFilter",value:function(t,e,i){var a,s=this,r=this.w;if(t.unfilter(!0),"none"!==i){var n,o,l=r.config.chart.dropShadow,h="lighten"===i?2:.3;if(t.filterWith((function(t){t.colorMatrix({type:"matrix",values:"\n ".concat(h," 0 0 0 0\n 0 ").concat(h," 0 0 0\n 0 0 ").concat(h," 0 0\n 0 0 0 1 0\n "),in:"SourceGraphic",result:"brightness"}),l.enabled&&s.addShadow(t,e,l,"brightness")})),!l.noUserSpaceOnUse)null===(n=t.filterer())||void 0===n||null===(o=n.node)||void 0===o||o.setAttribute("filterUnits","userSpaceOnUse");this._scaleFilterSize(null===(a=t.filterer())||void 0===a?void 0:a.node)}else this.getDefaultFilter(t,e)}},{key:"addShadow",value:function(t,e,i,a){var s,r=this.w,n=i.blur,o=i.top,l=i.left,h=i.color,c=i.opacity;if(h=Array.isArray(h)?h[e]:h,(null===(s=r.config.chart.dropShadow.enabledOnSeries)||void 0===s?void 0:s.length)>0&&-1===r.config.chart.dropShadow.enabledOnSeries.indexOf(e))return t;t.offset({in:a,dx:l,dy:o,result:"offset"}),t.gaussianBlur({in:"offset",stdDeviation:n,result:"blur"}),t.flood({"flood-color":h,"flood-opacity":c,result:"flood"}),t.composite({in:"flood",in2:"blur",operator:"in",result:"shadow"}),t.merge(["shadow",a])}},{key:"dropShadow",value:function(t,e){var i,a,s,r,n,o=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,h=this.w;if(t.unfilter(!0),v.isMsEdge()&&"radialBar"===h.config.chart.type)return t;if((null===(i=h.config.chart.dropShadow.enabledOnSeries)||void 0===i?void 0:i.length)>0&&-1===(null===(s=h.config.chart.dropShadow.enabledOnSeries)||void 0===s?void 0:s.indexOf(l)))return t;(t.filterWith((function(t){o.addShadow(t,l,e,"SourceGraphic")})),e.noUserSpaceOnUse)||(null===(r=t.filterer())||void 0===r||null===(n=r.node)||void 0===n||n.setAttribute("filterUnits","userSpaceOnUse"));return this._scaleFilterSize(null===(a=t.filterer())||void 0===a?void 0:a.node),t}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type)}}},{key:"_scaleFilterSize",value:function(t){if(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}}]),t}(),Mi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"roundPathCorners",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,n=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/n))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}t.indexOf("NaN")>-1&&(t="");var n=t.split(/[,\s]/).reduce((function(t,e){var i=e.match(/^([a-zA-Z])(.+)/);return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),o=[];if(n.length>1){var l=r(n[0]),h=null;"Z"==n[n.length-1][0]&&n[0].length>2&&(h=["L",l.x,l.y],n[n.length-1]=h),o.push(n[0]);for(var c=1;c2&&"L"==u[0]&&g.length>2&&"L"==g[0]){var p,f,x=r(d),b=r(u),m=r(g);p=i(b,x,e),f=i(b,m,e),s(u,p),u.origPoint=b,o.push(u);var v=a(p,b,.5),y=a(b,f,.5),w=["C",v.x,v.y,y.x,y.y,f.x,f.y];w.origPoint=b,o.push(w)}else o.push(u)}if(h){var k=r(o[o.length-1]);o.push(["Z"]),s(o[0],k)}}else o=n;return o.reduce((function(t,e){return t+e.join(" ")+" "}),"")}},{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"butt";return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":n,"stroke-linecap":o})}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:n,"stroke-width":null!==o?o:0,stroke:null!==l?l:"none","stroke-dasharray":h}),c.node.setAttribute("fill",r),c}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none";return this.w.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i})}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t<0&&(t=0);var i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,n=void 0===r?1:r,o=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,u=t.classes,g=t.strokeLinecap,p=void 0===g?null:g,f=t.strokeDashArray,x=void 0===f?0:f,b=this.w;return null===p&&(p=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":h,stroke:s,"stroke-opacity":d,"stroke-linecap":p,"stroke-width":n,"stroke-dasharray":x,class:u})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[" L",t,e].join(" "):"H"===i?a=[" H",t].join(" "):"V"===i&&(a=[" V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){var n=["C",t,e,i,a,s,r].join(" ");return n}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,n){var o="A";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(o="a");var l=[o,t,e,i,a,s,r,n].join(" ");return l}},{key:"renderPaths",value:function(t){var e,i=t.j,a=t.realIndex,s=t.pathFrom,r=t.pathTo,n=t.stroke,o=t.strokeWidth,l=t.strokeLinecap,h=t.fill,c=t.animationDelay,d=t.initialSpeed,g=t.dataChangeSpeed,p=t.className,f=t.chartType,x=t.shouldClipToGrid,b=void 0===x||x,m=t.bindEventsOnPaths,v=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,C=new Li(this.ctx),S=new y(this.ctx),L=this.w.config.chart.animations.enabled,M=L&&this.w.config.chart.animations.dynamicAnimation.enabled;if(s&&s.startsWith("M 0 0")&&r){var P=r.match(/^M\s+[\d.-]+\s+[\d.-]+/);P&&(s=s.replace(/^M\s+0\s+0/,P[0]))}var I=!!(L&&!A.globals.resized||M&&A.globals.dataChanged&&A.globals.shouldAnimate);I?e=s:(e=r,A.globals.animationEnded=!0);var T=A.config.stroke.dashArray,z=0;z=Array.isArray(T)?T[a]:A.config.stroke.dashArray;var X=this.drawPath({d:e,stroke:n,strokeWidth:o,fill:h,fillOpacity:1,classes:p,strokeLinecap:l,strokeDashArray:z});X.attr("index",a),b&&("bar"===f&&!A.globals.isHorizontal||A.globals.comboCharts?X.attr({"clip-path":"url(#gridRectBarMask".concat(A.globals.cuid,")")}):X.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")})),A.config.chart.dropShadow.enabled&&k&&C.dropShadow(X,A.config.chart.dropShadow,a),v&&(X.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,X)),X.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,X)),X.node.addEventListener("mousedown",this.pathMouseDown.bind(this,X))),X.attr({pathTo:r,pathFrom:s});var R={el:X,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:h,strokeWidth:o,delay:c};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||S.showDelayedElements():S.animatePathsGradually(u(u({},R),{},{speed:d})),A.globals.dataChanged&&M&&I&&S.animatePathsGradually(u(u({},R),{},{speed:g})),X}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}))}},{key:"drawGradient",value:function(t,e,i,a,s){var r,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:[],h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf("#")&&(e=v.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=v.hexToRgba(i,s));var d=0,u=1,g=1,p=null;null!==o&&(d=void 0!==o[0]?o[0]/100:0,u=void 0!==o[1]?o[1]/100:1,g=void 0!==o[2]?o[2]/100:1,p=void 0!==o[3]?o[3]/100:null);var f=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"polarArea"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(r=l&&0!==l.length?c.globals.dom.Paper.gradient(f?"radial":"linear",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.stop(e.offset/100,e.color,e.opacity)}))})):c.globals.dom.Paper.gradient(f?"radial":"linear",(function(t){t.stop(d,e,a),t.stop(u,i,s),t.stop(g,i,s),null!==p&&t.stop(p,e,a)})),f){var x=c.globals.gridWidth/2,b=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:x,cy:b,r:n}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),n=r.width/e.length,o=Math.floor(i/n);return i-1){var o=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.find(".apexcharts-series path:not(.apexcharts-decoration-element)"),h=i.globals.dom.Paper.find(".apexcharts-series circle:not(.apexcharts-decoration-element), .apexcharts-series rect:not(.apexcharts-decoration-element)"),c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute("selected","true"),n="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===n){var d=i.config.states.active.filter;if("none"!==d)a.applyFilter(t,s,d.type);else if("none"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var u=i.config.states.hover.filter;a.applyFilter(t,s,u.type)}}else if("none"!==i.config.states.active.filter.type)if("none"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{u=i.config.states.hover.filter;a.applyFilter(t,s,u.type)}"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e={};return t&&"function"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&n.attr("transform",a),r.globals.dom.Paper.add(n);var o=n.bbox();return s||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),Pi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"getStackedSeriesTotals",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"getStackedSeriesTotalsByGroups",value:function(){var t=this,e=this.w,i=[];return e.globals.seriesGroups.forEach((function(a){var s=[];e.config.series.forEach((function(t,i){a.indexOf(e.globals.seriesNames[i])>-1&&s.push(i)}));var r=e.globals.series.map((function(t,e){return-1===s.indexOf(e)?e:-1})).filter((function(t){return-1!==t}));i.push(t.getStackedSeriesTotals(r))})),i}},{key:"setSeriesYAxisMappings",value:function(){var t=this.w.globals,e=this.w.config,i=[],a=[],s=[],r=t.series.length>e.yaxis.length||e.yaxis.some((function(t){return Array.isArray(t.seriesName)}));e.series.forEach((function(t,e){s.push(e),a.push(null)})),e.yaxis.forEach((function(t,e){i[e]=[]}));var n=[];e.yaxis.forEach((function(t,a){var o=!1;if(t.seriesName){var l=[];Array.isArray(t.seriesName)?l=t.seriesName:l.push(t.seriesName),l.forEach((function(t){e.series.forEach((function(e,n){if(e.name===t){var l=n;a===n||r?!r||s.indexOf(n)>-1?i[a].push([a,n]):console.warn("Series '"+e.name+"' referenced more than once in what looks like the new style. That is, when using either seriesName: [], or when there are more series than yaxes."):(i[n].push([n,a]),l=a),o=!0,-1!==(l=s.indexOf(l))&&s.splice(l,1)}}))}))}o||n.push(a)})),i=i.map((function(t,e){var i=[];return t.forEach((function(t){a[t[1]]=t[0],i.push(t[1])})),i}));for(var o=e.yaxis.length-1,l=0;l0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(t.config.markers.hover.size>0?e=t.config.markers.hover.size:e+=t.config.markers.hover.sizeOffset),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][n]0){var g=function(t,e){var i=s.config.yaxis[s.globals.seriesYAxisReverseMap[e]],r=t<0?-1:1;return t=Math.abs(t),i.logarithmic&&(t=a.getBaseLog(i.logBase,t)),-r*t/n[e]};if(r.isMultipleYAxis){l=[];for(var p=0;p0&&e.forEach((function(e){var n=[],o=[];t.i.forEach((function(i,a){s.config.series[i].group===e&&(n.push(t.series[a]),o.push(i))})),n.length>0&&r.push(a.draw(n,i,o))})),r}}],[{key:"checkComboSeries",value:function(t,e){var i=!1,a=0,s=0;return void 0===e&&(e="line"),t.length&&void 0!==t[0].type&&t.forEach((function(t){"bar"!==t.type&&"column"!==t.type&&"candlestick"!==t.type&&"boxPlot"!==t.type||a++,void 0!==t.type&&t.type!==e&&s++})),s>0&&(i=!0),{comboBarCount:a,comboCharts:i}}},{key:"extendArrayProps",value:function(t,e,i){var a,s,r,n,o,l;(null!==(a=e)&&void 0!==a&&a.yaxis&&(e=t.extendYAxis(e,i)),null!==(s=e)&&void 0!==s&&s.annotations)&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),null!==(r=e)&&void 0!==r&&null!==(n=r.annotations)&&void 0!==n&&n.xaxis&&(e=t.extendXAxisAnnotations(e)),null!==(o=e)&&void 0!==o&&null!==(l=o.annotations)&&void 0!==l&&l.points&&(e=t.extendPointAnnotations(e)));return e}}]),t}(),Ii=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e}return s(t,[{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4);var n="top"===t.label.position?r.width:-r.width;s.setAttribute("y",parseFloat(s.getAttribute("y"))+n);var o=this.annoCtx.graphics.rotateAroundCenter(s),l=o.x,h=o.y;s.setAttribute("transform","rotate(-90 ".concat(l," ").concat(h,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!t||!e.label.text||!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding,n=r.left,o=r.right,l=r.top,h=r.bottom;if("vertical"===e.label.orientation){var c=[n,o,l,h];l=c[0],h=c[1],n=c[2],o=c[3]}var d=s.left-a.left-n,u=s.top-a.top-l,g=this.annoCtx.graphics.drawRect(d-i.globals.barPadForNumericAxis,u,s.width+n+o,s.height+l+h,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&g.node.classList.add(e.id),g}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var n=r.parentNode,o=t.addBackgroundToAnno(r,i);o&&(n.insertBefore(o.node,r),i.label.mouseEnter&&o.node.addEventListener("mouseenter",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&o.node.addEventListener("mouseleave",i.label.mouseLeave.bind(t,i)),i.label.click&&o.node.addEventListener("click",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.forEach((function(t,e){return i(t,e,"xaxis")})),e.config.annotations.yaxis.forEach((function(t,e){return i(t,e,"yaxis")})),e.config.annotations.points.forEach((function(t,e){return i(t,e,"point")}))}},{key:"getY1Y2",value:function(t,e){var i,a=this.w,s="y1"===t?e.y:e.y2,r=!1;if(this.annoCtx.invertAxis){var n=a.config.xaxis.convertedCatToNumeric?a.globals.categoryLabels:a.globals.labels,o=n.indexOf(s),l=a.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child(".concat(o+1,")"));i=l?parseFloat(l.getAttribute("y")):(a.globals.gridHeight/n.length-1)*(o+1)-a.globals.barHeight,void 0!==e.seriesIndex&&a.globals.barHeight&&(i-=a.globals.barHeight/2*(a.globals.series.length-1)-a.globals.barHeight*e.seriesIndex)}else{var h,c=a.globals.seriesYAxisMap[e.yAxisIndex][0],d=a.config.yaxis[e.yAxisIndex].logarithmic?new Pi(this.annoCtx.ctx).getLogVal(a.config.yaxis[e.yAxisIndex].logBase,s,c)/a.globals.yLogRatio[c]:(s-a.globals.minYArr[c])/(a.globals.yRange[c]/a.globals.gridHeight);i=a.globals.gridHeight-Math.min(Math.max(d,0),a.globals.gridHeight),r=d>a.globals.gridHeight||d<0,!e.marker||void 0!==e.y&&null!==e.y||(i=0),null!==(h=a.config.yaxis[e.yAxisIndex])&&void 0!==h&&h.reversed&&(i=d)}return"string"==typeof s&&s.includes("px")&&(i=parseFloat(s)),{yP:i,clipped:r}}},{key:"getX1X2",value:function(t,e){var i=this.w,a="x1"===t?e.x:e.x2,s=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,r=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,n=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,o=!1,l=this.annoCtx.inversedReversedAxis?(r-a)/(n/i.globals.gridWidth):(a-s)/(n/i.globals.gridWidth);return"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||i.config.chart.sparkline.enabled||(l=this.getStringX(a)),"string"==typeof a&&a.includes("px")&&(l=parseFloat(a)),null==a&&e.marker&&(l=i.globals.gridWidth),void 0!==e.seriesIndex&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(l-=i.globals.barWidth/2*(i.globals.series.length-1)-i.globals.barWidth*e.seriesIndex),"number"!=typeof l&&(l=0,o=!0),parseFloat(l.toFixed(10))>parseFloat(i.globals.gridWidth.toFixed(10))?(l=i.globals.gridWidth,o=!0):l<0&&(l=0,o=!0),{x:l,clipped:o}}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.map((function(t){return Array.isArray(t)?t.join(" "):t})).indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child(".concat(a+1,")"));return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),t}(),Ti=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new Ii(this.annoCtx)}return s(t,[{key:"addXaxisAnnotation",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2("x1",t),n=r.x,o=r.clipped,l=!0,h=t.label.text,c=t.strokeDashArray;if(v.isNumber(n)){if(null===t.x2||void 0===t.x2){if(!o){var d=this.annoCtx.graphics.drawLine(n+t.offsetX,0+t.offsetY,n+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,c,t.borderWidth);e.appendChild(d.node),t.id&&d.node.classList.add(t.id)}}else{var u=this.helpers.getX1X2("x2",t);if(a=u.x,l=u.clipped,a12?u-12:0===u?12:u;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(u))).replace(/(^|[^\\])H/g,"$1"+u)).replace(/(^|[^\\])hh+/g,"$1"+l(g))).replace(/(^|[^\\])h/g,"$1"+g);var p=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(p))).replace(/(^|[^\\])m/g,"$1"+p);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(x))).replace(/(^|[^\\])s/g,"$1"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(b)),b=Math.round(b/10);var m=u<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+b)).replace(/(^|[^\\])TT+/g,"$1"+m)).replace(/(^|[^\\])T/g,"$1"+m.charAt(0));var v=m.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+v)).replace(/(^|[^\\])t/g,"$1"+v.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?"Z":y>0?"+":"-";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+":"+l(k)}e=e.replace(/(^|[^\\])K/g,"$1"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(s[0],"g"),s[c])).replace(new RegExp(r[0],"g"),r[c])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),n=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),o=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(n[6],10),maxMillisecond:parseInt(o[6],10),minSecond:parseInt(n[5],10),maxSecond:parseInt(o[5],10),minMinute:parseInt(n[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(n[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(n[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(n[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(n[0],10),maxYear:parseInt(o[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=v.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),Xi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat="dd MMM"}return s(t,[{key:"xLabelFormat",value:function(t,e,i,a){var s=this.w;if("datetime"===s.config.xaxis.type&&void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter){var r=new zi(this.ctx);return r.formatDate(r.getDate(e),s.config.tooltip.x.format)}return t(e,i,a)}},{key:"defaultGeneralFormatter",value:function(t){return Array.isArray(t)?t.map((function(t){return t})):t}},{key:"defaultYFormatter",value:function(t,e,i){var a=this.w;if(v.isNumber(t))if(0!==a.globals.yValueDecimal)t=t.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:a.globals.yValueDecimal);else{var s=t.toFixed(0);t=t==s?s:t.toFixed(1)}return t}},{key:"setLabelFormatters",value:function(){var t=this,e=this.w;return e.globals.xaxisTooltipFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttKeyFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttZFormatter=function(t){return t},e.globals.legendFormatter=function(e){return t.defaultGeneralFormatter(e)},void 0!==e.config.xaxis.labels.formatter?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=function(t){if(v.isNumber(t)){if(!e.config.xaxis.convertedCatToNumeric&&"numeric"===e.config.xaxis.type){if(v.isNumber(e.config.xaxis.decimalsInFloat))return t.toFixed(e.config.xaxis.decimalsInFloat);var i=e.globals.maxX-e.globals.minX;return i>0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},"function"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,"function"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),Ri=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"getLabel",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",n=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],o=this.w,l=void 0===t[a]?"":t[a],h=l,c=o.globals.xLabelFormatter,d=o.config.xaxis.labels.formatter,u=!1,g=new Xi(this.ctx),p=l;n&&(h=g.xLabelFormat(c,l,p,{i:a,dateFormatter:new zi(this.ctx).formatDate,w:o}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new zi(this.ctx).formatDate,w:o})));var f,x;e.length>0?(f=e[a].unit,x=null,e.forEach((function(t){"month"===t.unit?x="year":"day"===t.unit?x="month":"hour"===t.unit?x="day":"minute"===t.unit&&(x="hour")})),u=x===f,i=e[a].position,h=e[a].value):"datetime"===o.config.xaxis.type&&void 0===d&&(h=""),void 0===h&&(h=""),h=Array.isArray(h)?h:h.toString();var b=new Mi(this.ctx),m={};m=o.globals.rotateXLabels&&n?b.getTextRects(h,parseInt(r,10),null,"rotate(".concat(o.config.xaxis.labels.rotate," 0 0)"),!1):b.getTextRects(h,parseInt(r,10));var v=!o.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&("NaN"===String(h)||s.indexOf(h)>=0&&v)&&(h=""),{x:i,text:h,textRect:m,isBold:u}}},{key:"checkLabelBasedOnTickamount",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return"dataPoints"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=""),e}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var n=s[s.length-1];if(r.config.xaxis.labels.trim&&"datetime"!==r.config.xaxis.type)return e;e.xa.length||a.some((function(t){return Array.isArray(t.seriesName)}))?t:i.seriesYAxisReverseMap[t]}},{key:"isYAxisHidden",value:function(t){var e=this.w,i=e.config.yaxis[t];if(!i.show||this.yAxisAllSeriesCollapsed(t))return!0;if(!i.showForNullSeries){var a=e.globals.seriesYAxisMap[t],s=new Pi(this.ctx);return a.every((function(t){return s.isSeriesNull(t)}))}return!1}},{key:"getYAxisForeColor",value:function(t,e){var i=this.w;return Array.isArray(t)&&i.globals.yAxisScale[e]&&this.ctx.theme.pushExtraColors(t,i.globals.yAxisScale[e].result.length,!1),t}},{key:"drawYAxisTicks",value:function(t,e,i,a,s,r,n){var o=this.w,l=new Mi(this.ctx),h=o.globals.translateY+o.config.yaxis[s].labels.offsetY;if(o.globals.isBarHorizontal?h=0:"heatmap"===o.config.chart.type&&(h+=r/2),a.show&&e>0){!0===o.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=l.drawLine(t+i.offsetX-a.width+a.offsetX,h+a.offsetY,t+i.offsetX+a.offsetX,h+a.offsetY,a.color);n.add(d),h+=r}}}}]),t}(),Ei=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new Ii(this.annoCtx),this.axesUtils=new Ri(this.annoCtx)}return s(t,[{key:"addYaxisAnnotation",value:function(t,e,i){var a,s=this.w,r=t.strokeDashArray,n=this.helpers.getY1Y2("y1",t),o=n.yP,l=n.clipped,h=!0,c=!1,d=t.label.text;if(null===t.y2||void 0===t.y2){if(!l){c=!0;var u=this.annoCtx.graphics.drawLine(0+t.offsetX,o+t.offsetY,this._getYAxisAnnotationWidth(t),o+t.offsetY,t.borderColor,r,t.borderWidth);e.appendChild(u.node),t.id&&u.node.classList.add(t.id)}}else{if(a=(n=this.helpers.getY1Y2("y2",t)).yP,h=n.clipped,a>o){var g=o;o=a,a=g}if(!l||!h){c=!0;var p=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),o-a,0,t.fillColor,t.opacity,1,t.borderColor,r);p.node.classList.add("apexcharts-annotation-rect"),p.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(p.node),t.id&&p.node.classList.add(t.id)}}if(c){var f="right"===t.label.position?s.globals.gridWidth:"center"===t.label.position?s.globals.gridWidth/2:0,x=this.annoCtx.graphics.drawText({x:f+t.label.offsetX,y:(null!=a?a:o)+t.label.offsetY-3,text:d,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});x.attr({rel:i}),e.appendChild(x.node)}}},{key:"_getYAxisAnnotationWidth",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf("%")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.forEach((function(e,a){e.yAxisIndex=t.axesUtils.translateYAxisIndex(e.yAxisIndex),t.axesUtils.isYAxisHidden(e.yAxisIndex)&&t.axesUtils.yAxisAllSeriesCollapsed(e.yAxisIndex)||t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),Yi=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new Ii(this.annoCtx)}return s(t,[{key:"addPointAnnotation",value:function(t,e,i){if(!(this.w.globals.collapsedSeriesIndices.indexOf(t.seriesIndex)>-1)){var a=this.helpers.getX1X2("x1",t),s=a.x,r=a.clipped,n=(a=this.helpers.getY1Y2("y1",t)).yP,o=a.clipped;if(v.isNumber(s)&&!o&&!r){var l={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:"apexcharts-point-annotation-marker ".concat(t.marker.cssClass," ").concat(t.id?t.id:"")},h=this.annoCtx.graphics.drawMarker(s+t.marker.offsetX,n+t.marker.offsetY,l);e.appendChild(h.node);var c=t.label.text?t.label.text:"",d=this.annoCtx.graphics.drawText({x:s+t.label.offsetX,y:n+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:c,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});if(d.attr({rel:i}),e.appendChild(d.node),t.customSVG.SVG){var u=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});u.attr({transform:"translate(".concat(s+t.customSVG.offsetX,", ").concat(n+t.customSVG.offsetY,")")}),u.node.innerHTML=t.customSVG.SVG,e.appendChild(u.node)}if(t.image.path){var g=t.image.width?t.image.width:20,p=t.image.height?t.image.height:20;h=this.annoCtx.addImage({x:s+t.image.offsetX-g/2,y:n+t.image.offsetY-p/2,width:g,height:p,path:t.image.path,appendTo:".apexcharts-point-annotations"})}t.mouseEnter&&h.node.addEventListener("mouseenter",t.mouseEnter.bind(this,t)),t.mouseLeave&&h.node.addEventListener("mouseleave",t.mouseLeave.bind(this,t)),t.click&&h.node.addEventListener("click",t.click.bind(this,t))}}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var Hi={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},Oi=function(){function t(){i(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,showDuplicates:!1,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return s(t,[{key:"init",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"",locales:[Hi],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.7},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,injectStyleSheet:!0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",categoryFormatter:void 0,valueFormatter:void 0},png:{filename:void 0},svg:{filename:void 0},scale:void 0,width:void 0},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,allowMouseWheelZoom:!0,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},parsing:{x:void 0,y:void 0},plotOptions:{line:{isSlopeChart:!1,colors:{threshold:0,colorAboveThreshold:void 0,colorBelowThreshold:void 0}},area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,borderRadius:4,dataLabels:{format:"scale"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0},seriesTitle:{show:!0,offsetY:1,offsetX:1,borderColor:"#000",borderWidth:1,borderRadius:2,style:{background:"rgba(0, 0, 0, 0.6)",color:"#fff",fontSize:"12px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:6,right:6,top:2,bottom:2}}}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+"%"}}},barLabels:{enabled:!1,offsetX:0,offsetY:0,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:"16px",formatter:function(t){return t},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",backgroundColor:void 0,borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.8}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.8}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],clusterGroupedSeries:!0,clusterGroupedSeriesOrientation:"vertical",labels:{colors:void 0,useSeriesColors:!1},markers:{size:7,fillColors:void 0,strokeWidth:1,shape:void 0,offsetX:0,offsetY:0,customHTML:void 0,onClick:void 0},itemMargin:{horizontal:5,vertical:4},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",offsetX:0,offsetY:0,showNullDataPoints:!0,onClick:void 0,onDblClick:void 0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{hover:{filter:{type:"lighten"}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken"}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!1,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.8}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),Fi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.graphics=new Mi(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new Ii(this),this.xAxisAnnotations=new Ti(this),this.yAxisAnnotations=new Ei(this),this.pointsAnnotations=new Yi(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return s(t,[{key:"drawAxesAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts&&t.globals.dataPoints){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],n=[i.node,e.node,a.node],o=0;o<3;o++)t.globals.dom.elGraphical.add(r[o]),!s||t.globals.resized||t.globals.dataChanged||"scatter"!==t.config.chart.type&&"bubble"!==t.config.chart.type&&t.globals.dataPoints>1&&n[o].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:n[o],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,n=t.foreColor,o=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,u=t.borderWidth,g=t.strokeDashArray,p=t.borderRadius,f=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-svg":x,m=t.paddingLeft,v=void 0===m?4:m,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,C=t.paddingTop,S=void 0===C?2:C,L=this.w,M=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:o||"12px",fontWeight:h||"regular",fontFamily:l||L.config.chart.fontFamily,foreColor:n||L.config.chart.foreColor,cssClass:c}),P=L.globals.dom.baseEl.querySelector(b);P&&P.appendChild(M.node);var I=M.bbox();if(s){var T=this.graphics.drawRect(I.x-v,I.y-S,I.width+v+w,I.height+A+S,p,d||"transparent",1,u,f,g);P.insertBefore(T.node,M.node)}}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,n=t.y,o=void 0===n?0:n,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,u=t.appendTo,g=void 0===u?".apexcharts-svg":u,p=i.globals.dom.Paper.image(a);p.size(h,d).move(r,o);var f=i.globals.dom.baseEl.querySelector(g);return f&&f.appendChild(p.node),p}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,n=a,o=n.w,l=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=l.childNodes.length+1,c=new Oi,d=Object.assign({},"xaxis"===s?c.xAxisAnnotation:"yaxis"===s?c.yAxisAnnotation:c.pointAnnotation),u=v.extend(d,e);switch(s){case"xaxis":this.addXaxisAnnotation(u,l,h);break;case"yaxis":this.addYaxisAnnotation(u,l,h);break;case"point":this.addPointAnnotation(u,l,h)}var g=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),p=this.helpers.addBackgroundToAnno(g,u);return p&&l.insertBefore(p.node,g),i&&o.globals.memory.methodsToExec.push({context:n,id:u.id?u.id:v.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){for(var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations"),a=e.globals.memory.methodsToExec.length-1;a>=0;a--)"addText"!==e.globals.memory.methodsToExec[a].label&&"addAnnotation"!==e.globals.memory.methodsToExec[a].label||e.globals.memory.methodsToExec.splice(a,1);i=v.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Object.keys(i.config.annotations).forEach((function(t){var a=i.config.annotations[t];Array.isArray(a)&&(i.config.annotations[t]=a.filter((function(t){return t.id!==e})))})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),Di=function(t){var e,i=t.isTimeline,a=t.ctx,s=t.seriesIndex,r=t.dataPointIndex,n=t.y1,o=t.y2,l=t.w,h=l.globals.seriesRangeStart[s][r],c=l.globals.seriesRangeEnd[s][r],d=l.globals.labels[r],u=l.config.series[s].name?l.config.series[s].name:"",g=l.globals.ttKeyFormatter,p=l.config.tooltip.y.title.formatter,f={w:l,seriesIndex:s,dataPointIndex:r,start:h,end:c};("function"==typeof p&&(u=p(u,f)),null!==(e=l.config.series[s].data[r])&&void 0!==e&&e.x&&(d=l.config.series[s].data[r].x),i)||"datetime"===l.config.xaxis.type&&(d=new Xi(a).xLabelFormat(l.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new zi(a).formatDate,w:l}));"function"==typeof g&&(d=g(d,f)),Number.isFinite(n)&&Number.isFinite(o)&&(h=n,c=o);var x="",b="",m=l.globals.colors[s];if(void 0===l.config.tooltip.x.formatter)if("datetime"===l.config.xaxis.type){var v=new zi(a);x=v.formatDate(v.getDate(h),l.config.tooltip.x.format),b=v.formatDate(v.getDate(c),l.config.tooltip.x.format)}else x=h,b=c;else x=l.config.tooltip.x.formatter(h),b=l.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:x,endVal:b,ylabel:d,color:m,seriesName:u}},_i=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,n=t.seriesIndex,o=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(n);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[n][o]),c='\n '.concat(s,'\n - \n ').concat(r,"\n ");return'
'+(i||"")+'
'+a+": "+(t.w.globals.comboCharts?"rangeArea"===t.w.config.series[n].type||"rangeBar"===t.w.config.series[n].type?c:"".concat(h,""):c)+"
"},Ni=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:"hideYAxis",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:"line",value:function(){return{dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.hideYAxis();return v.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"slope",value:function(){return this.hideYAxis(),{chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!0,formatter:function(t,e){var i=e.w.config.series[e.seriesIndex].name;return null!==t?i+": "+t:""},background:{enabled:!1},offsetX:-5},grid:{xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{position:"top",labels:{style:{fontSize:14,fontWeight:900}},tooltip:{enabled:!1},crosshairs:{show:!1}},markers:{size:8,hover:{sizeOffset:1}},legend:{show:!1},tooltip:{shared:!1,intersect:!0,followCursor:!0},stroke:{width:5,curve:"straight"}}}},{key:"bar",value:function(){return{chart:{stacked:!1},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"square"},fill:{opacity:.85},legend:{markers:{shape:"square"}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"funnel",value:function(){return this.hideYAxis(),u(u({},this.bar()),{},{chart:{animations:{speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:"around",borderRadius:0,dataLabels:{position:"center"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:"candlestick",value:function(){var t=this;return{stroke:{width:1},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:7,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?"rangeBar"===s.config.series[i].type||"rangeArea"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:["#fff"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var e=Di(u(u({},t),{},{isTimeline:!0})),i=e.color,a=e.seriesName,s=e.ylabel,r=e.startVal,n=e.endVal;return _i(u(u({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t):function(t){var e=Di(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,n=e.end;return _i(u(u({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"dumbbell",value:function(t){var e,i;return null!==(e=t.plotOptions.bar)&&void 0!==e&&e.barHeight||(t.plotOptions.bar.barHeight=2),null!==(i=t.plotOptions.bar)&&void 0!==i&&i.columnWidth||(t.plotOptions.bar.columnWidth=2),t}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var e=Di(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,n=e.end;return _i(u(u({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t)}}}}},{key:"brush",value:function(t){return v.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"stackedBars",value:function(){var t=this.bar();return u(u({},t),{},{plotOptions:u(u({},t.plotOptions),{},{bar:u(u({},t.plotOptions.bar),{},{borderRadiusApplication:"end",borderRadiusWhenStacked:"last"})})})}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return v.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return v.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square"}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{opacity:1,gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:"polarArea",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:5,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:"_getBoxTooltip",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],n=t.globals.seriesCandleH[e][i],o=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
\n '.concat(t.config.series[e].name?t.config.series[e].name:"series-"+(e+1),": ").concat(t.globals.series[e][i],"\n
"):'
')+"
".concat(a[0],': ')+r+"
"+"
".concat(a[1],': ')+n+"
"+(o?"
".concat(a[2],': ')+o+"
":"")+"
".concat(a[3],': ')+l+"
"+"
".concat(a[4],': ')+h+"
"}}]),t}(),Wi=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:"init",value:function(t){var e=t.responsiveOverride,i=this.opts,a=new Oi,s=new Ni(i);this.chartType=i.chart.type,i=this.extendYAxis(i),i=this.extendAnnotations(i);var r=a.init(),n={};if(i&&"object"===b(i)){var o,l,h,c,d,u,g,p,f,x,m={};m=-1!==["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(i.chart.type)?s[i.chart.type]():s.line(),null!==(o=i.plotOptions)&&void 0!==o&&null!==(l=o.bar)&&void 0!==l&&l.isFunnel&&(m=s.funnel()),i.chart.stacked&&"bar"===i.chart.type&&(m=s.stackedBars()),null!==(h=i.chart.brush)&&void 0!==h&&h.enabled&&(m=s.brush(m)),null!==(c=i.plotOptions)&&void 0!==c&&null!==(d=c.line)&&void 0!==d&&d.isSlopeChart&&(m=s.slope()),i.chart.stacked&&"100%"===i.chart.stackType&&(i=s.stacked100(i)),null!==(u=i.plotOptions)&&void 0!==u&&null!==(g=u.bar)&&void 0!==g&&g.isDumbbell&&(i=s.dumbbell(i)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},e||(i.xaxis.convertedCatToNumeric=!1),(null!==(p=(i=this.checkForCatToNumericXAxis(this.chartType,m,i)).chart.sparkline)&&void 0!==p&&p.enabled||null!==(f=window.Apex.chart)&&void 0!==f&&null!==(x=f.sparkline)&&void 0!==x&&x.enabled)&&(m=s.sparkline(m)),n=v.extend(r,m)}var y=v.extend(n,window.Apex);return r=v.extend(y,i),r=this.handleUserInputErrors(r)}},{key:"checkForCatToNumericXAxis",value:function(t,e,i){var a,s,r=new Ni(i),n=("bar"===t||"boxPlot"===t)&&(null===(a=i.plotOptions)||void 0===a||null===(s=a.bar)||void 0===s?void 0:s.horizontal),o="pie"===t||"polarArea"===t||"donut"===t||"radar"===t||"radialBar"===t||"heatmap"===t,l="datetime"!==i.xaxis.type&&"numeric"!==i.xaxis.type,h=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return n||o||!l||"between"===h||(i=r.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(t,e){var i=new Oi;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=v.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[v.extend(i.yAxis,t.yaxis)]:t.yaxis=v.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name="series-".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=v.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new Oi;return t.annotations.yaxis=v.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new Oi;return t.annotations.xaxis=v.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new Oi;return t.annotations.points=v.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if("bar"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&"barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width="tickWidth"),"candlestick"!==e.chart.type&&"boxPlot"!==e.chart.type||e.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(e.chart.type," chart is not supported.")),e.yaxis[0].reversed=!1),e}}]),t}(),Bi=function(){function t(){i(this,t)}return s(t,[{key:"initGlobalVars",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.dataWasParsed=!1,t.originalSeries=null,t.labels=[],t.hasXaxisGroups=!1,t.groups=[],t.barGroups=[],t.lineGroups=[],t.areaGroups=[],t.hasSeriesGroups=!1,t.seriesGroups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.lastWheelExecution=0,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0,t.multiAxisTickAmount=0}},{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],invalidLogScale:!1,ignoreYAxisIndexes:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,isSlopeChart:t.plotOptions.line.isSlopeChart,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,niceScaleAllowedMagMsd:[[1,1,2,5,5,5,10,10,10,10,10],[1,1,2,5,5,5,10,10,10,10,10]],niceScaleDefaultTicks:[1,2,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,24],seriesYAxisMap:[],seriesYAxisReverseMap:[]}}},{key:"init",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=v.extend({},t),e.initialSeries=v.clone(t.series),e.lastXAxis=v.clone(e.initialConfig.xaxis),e.lastYAxis=v.clone(e.initialConfig.yaxis),e}}]),t}(),Gi=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:"init",value:function(){var t=new Wi(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new Bi).init(t)}}}]),t}(),ji=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0,this.patternIDs=[]}return s(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,n=t.image,o=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(o=i.fill.image.width+1,l=i.fill.image.height):(o=r+1,l=r):(o=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");Mi.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:o+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,"href",n),Mi.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w,i=e.config.chart.type;return("bar"===i||"rangeBar"===i)&&e.config.plotOptions.bar.distributed||"heatmap"===i||"treemap"===i?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"computeColorStops",value:function(t,e){var i,a=this.w,s=null,n=null,o=r(t);try{for(o.s();!(i=o.n()).done;){var l=i.value;l>=e.threshold?(null===s||l>s)&&(s=l):(null===n||l-1?x=v.getOpacityFromRGBA(c):m=v.hexToRgba(v.rgb2hex(c),x),t.opacity&&(x=t.opacity),"pattern"===p&&(n=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:n,fillColor:c,fillOpacity:x,defaultColor:m})),b){var y=f(l.fill.gradient.colorStops)||[],w=l.fill.gradient.type;h&&(y[this.seriesIndex]=this.computeColorStops(s.globals.series[this.seriesIndex],l.plotOptions.line.colors),w="vertical"),o=this.handleGradientFill({type:w,fillConfig:t.fillConfig,fillColor:c,fillOpacity:x,colorStops:y,i:this.seriesIndex})}if("image"===p){var k=l.fill.image.src,A=t.patternID?t.patternID:"",C="pattern".concat(s.globals.cuid).concat(t.seriesNumber+1).concat(A);-1===this.patternIDs.indexOf(C)&&(this.clippedImgArea({opacity:x,image:Array.isArray(k)?t.seriesNumber-1&&(p=v.getOpacityFromRGBA(g));var f=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[n]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)d="dark"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?v.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?v.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var x=o.gradient.gradientToColors[l.seriesNumber];d=x,x.indexOf("rgba")>-1&&(f=v.getOpacityFromRGBA(x))}else d=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(d=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=d,d=b}return g.indexOf("rgb")>-1&&(g=v.rgb2hex(g)),d.indexOf("rgb")>-1&&(d=v.rgb2hex(d)),h.drawGradient(e,g,d,p,f,l.size,o.gradient.stops,r,n)}}]),t}(),Vi=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length0:h.config.markers.size>0)||n||p){m||(y+=" w".concat(v.randomId()));var w=this.getMarkerConfig({cssClass:y,seriesIndex:i,dataPointIndex:b});if(h.config.series[c].data[b]&&(h.config.series[c].data[b].fillColor&&(w.pointFillColor=h.config.series[c].data[b].fillColor),h.config.series[c].data[b].strokeColor&&(w.pointStrokeColor=h.config.series[c].data[b].strokeColor)),void 0!==s&&(w.pSize=s),(d.x[f]<-h.globals.markers.largestSize||d.x[f]>h.globals.gridWidth+h.globals.markers.largestSize||d.y[f]<-h.globals.markers.largestSize||d.y[f]>h.globals.gridHeight+h.globals.markers.largestSize)&&(w.pSize=0),!m)(h.globals.markers.size[i]>0||n||p)&&!u&&(u=g.group({class:n||p?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(h.globals.cuid,")")),(x=g.drawMarker(d.x[f],d.y[f],w)).attr("rel",b),x.attr("j",b),x.attr("index",i),x.node.setAttribute("default-marker-size",w.pSize),new Li(this.ctx).setSelectionFilter(x,i,b),this.addEvents(x),u&&u.add(x)}else void 0===h.globals.pointsArray[i]&&(h.globals.pointsArray[i]=[]),h.globals.pointsArray[i].push([d.x[f],d.y[f]])}return u}},{key:"getMarkerConfig",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.radius,n=void 0===r?null:r,o=t.size,l=void 0===o?null:o,h=t.strokeWidth,c=void 0===h?null:h,d=this.w,u=this.getMarkerStyle(i),g=null===l?d.globals.markers.size[i]:l,p=d.config.markers;return null!==s&&p.discrete.length&&p.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(u.pointStrokeColor=t.strokeColor,u.pointFillColor=t.fillColor,g=t.size,u.pointShape=t.shape)})),{pSize:null===n?g:n,pRadius:null!==n?n:p.radius,pointStrokeWidth:null!==c?c:Array.isArray(p.strokeWidth)?p.strokeWidth[i]:p.strokeWidth,pointStrokeColor:u.pointStrokeColor,pointFillColor:u.pointFillColor,shape:u.pointShape||(Array.isArray(p.shape)?p.shape[i]:p.shape),class:e,pointStrokeOpacity:Array.isArray(p.strokeOpacity)?p.strokeOpacity[i]:p.strokeOpacity,pointStrokeDashArray:Array.isArray(p.strokeDashArray)?p.strokeDashArray[i]:p.strokeDashArray,pointFillOpacity:Array.isArray(p.fillOpacity)?p.fillOpacity[i]:p.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(t){var e=this.w,i=new Mi(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),Ui=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled}return s(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new Mi(this.ctx),r=i.realIndex,n=i.pointsPos,o=i.zRatio,l=i.elParent,h=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(n.x))for(var c=0;cp.maxBubbleRadius&&(g=p.maxBubbleRadius)}var f=n.x[c],x=n.y[c];if(g=g||0,null!==x&&void 0!==a.globals.series[r][d]||(u=!1),u){var b=this.drawPoint(f,x,g,r,d,e);h.add(b)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,a,s,r){var n=this.w,o=a,l=new y(this.ctx),h=new Li(this.ctx),c=new ji(this.ctx),d=new Vi(this.ctx),u=new Mi(this.ctx),g=d.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:o,dataPointIndex:s,radius:"bubble"===n.config.chart.type||n.globals.comboCharts&&n.config.series[a]&&"bubble"===n.config.series[a].type?i:null}),p=c.fillPath({seriesNumber:a,dataPointIndex:s,color:g.pointFillColor,patternUnits:"objectBoundingBox",value:n.globals.series[a][r]}),f=u.drawMarker(t,e,g);if(n.config.series[o].data[s]&&n.config.series[o].data[s].fillColor&&(p=n.config.series[o].data[s].fillColor),f.attr({fill:p}),n.config.chart.dropShadow.enabled){var x=n.config.chart.dropShadow;h.dropShadow(f,x,a)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var b=n.config.chart.animations.speed;l.animateMarker(f,b,n.globals.easing,(function(){window.setTimeout((function(){l.animationCompleted(f)}),100)}))}return f.attr({rel:s,j:s,index:a,"default-marker-size":g.pSize}),h.setSelectionFilter(f,a,s),d.addEvents(f),f.node.classList.add("apexcharts-marker"),f}},{key:"centerTextInBubble",value:function(t){var e=this.w;return{y:t+=parseInt(e.config.dataLabels.style.fontSize,10)/4}}}]),t}(),qi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"dataLabelsCorrection",value:function(t,e,i,a,s,r,n){var o=this.w,l=!1,h=new Mi(this.ctx).getTextRects(i,n),c=h.width,d=h.height;e<0&&(e=0),e>o.globals.gridHeight+d&&(e=o.globals.gridHeight+d/2),void 0===o.globals.dataLabelsRects[a]&&(o.globals.dataLabelsRects[a]=[]),o.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var u=o.globals.dataLabelsRects[a].length-2,g=void 0!==o.globals.lastDrawnDataLabelsIndexes[a]?o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==o.globals.dataLabelsRects[a][u]){var p=o.globals.dataLabelsRects[a][g];(t>p.x+p.width||e>p.y+p.height||e+de.globals.gridWidth+b.textRects.width+30)&&(o="");var m=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(m=e.globals.dataLabels.style.colors[n]),"function"==typeof m&&(m=m({series:e.globals.series,seriesIndex:r,dataPointIndex:n,w:e})),u&&(m=u);var v=d.offsetX,y=d.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(v=0,y=0),e.globals.isSlopeChart&&(0!==n&&(v=-2*d.offsetX+5),0!==n&&n!==e.config.series[r].data.length-1&&(v=0)),b.drawnextLabel){if("middle"===l&&a===e.globals.gridWidth&&(l="end"),(x=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+v,y:s+y,foreColor:m,textAnchor:l||d.textAnchor,text:o,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||"normal"})).attr({class:f||"apexcharts-datalabel",cx:a,cy:s}),d.dropShadow.enabled){var w=d.dropShadow;new Li(this.ctx).dropShadow(x,w)}c.add(x),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(n)}return x}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,n=e.width,o=e.height,l=new Mi(this.ctx).drawRect(e.x-s,e.y-r/2,n+2*s,o+r,a.borderRadius,"transparent"!==i.config.chart.background&&i.config.chart.background?i.config.chart.background:"#fff",a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new Li(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=v.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:"highlightSeries",value:function(t){var e=this.w,i=this.getSeriesByName(t),a=parseInt(null==i?void 0:i.getAttribute("data:realIndex"),10),s=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis"),r=null,n=null,o=null;if(e.globals.axisCharts||"radialBar"===e.config.chart.type)if(e.globals.axisCharts){r=e.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(a,"']")),n=e.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(a,"']"));var l=e.globals.seriesYAxisReverseMap[a];o=e.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(l,"']"))}else r=e.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(a+1,"']"));else r=e.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(a+1,"'] path"));for(var h=0;h=t.from&&(r0&&void 0!==arguments[0]?arguments[0]:"asc",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r="asc"===t?0:s.length-1;"asc"===t?r=0;"asc"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return"bar"===t.type||"column"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute("data:realIndex")},n=0;n0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(e,"'] rect")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e("x")),y:parseFloat(e("y")),width:parseFloat(e("width")),height:parseFloat(e("height"))};a.push({rect:s,color:i[t].getAttribute("color")})},r=0;r0?t:[]}));return t}}]),t}(),Ji=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new Pi(this.ctx)}return s(t,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new $i(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new $i(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s="boxPlot"===i.chart.type||"boxPlot"===i.series[e].type,r=0;r=5?this.twoDSeries.push(v.parseNumber(t[e].data[r][4])):this.twoDSeries.push(v.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var n=new Date(t[e].data[r][0]);n=new Date(n).getTime(),this.twoDSeriesX.push(n)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var o=0;o-1&&(r=this.activeSeriesIndex);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new zi(i),n=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar="rangeBar"===a.chart.type&&s.isBarHorizontal,s.hasXaxisGroups="category"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasXaxisGroups&&(s.groups=a.xaxis.group.groups),t.forEach((function(t,e){void 0!==t.name?s.seriesNames.push(t.name):s.seriesNames.push("series-"+parseInt(e+1,10))})),this.coreUtils.setSeriesYAxisMappings();var o=[],l=f(new Set(a.series.map((function(t){return t.group}))));a.series.forEach((function(t,e){var i=l.indexOf(t.group);o[i]||(o[i]=[]),o[i].push(s.seriesNames[e])})),s.seriesGroups=o;for(var h=function(){for(var t=0;t0&&(this.twoDSeriesX=n,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var d=t[c].data.map((function(t){return v.parseNumber(t)}));s.series.push(d)}s.seriesZ.push(this.threeDSeries),void 0!==t[c].color?s.seriesColors.push(t[c].color):s.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config,a=Array.isArray(t)&&t.every((function(t){return"number"==typeof t}))&&i.labels.length>0,s=Array.isArray(t)&&t.some((function(t){return t&&"object"===b(t)&&t.data||t&&"object"===b(t)&&t.parsing}));if(a&&s&&console.warn("ApexCharts: Both old format (numeric series + labels) and new format (series objects with data/parsing) detected. Using old format for backward compatibility."),a){e.series=t.slice(),e.seriesNames=i.labels.slice();for(var r=0;r100&&console.warn("ApexCharts: RadialBar value ".concat(e," > 100, consider using percentage values (0-100)")),e})));for(var l=0;l0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),e.xaxis.convertedCatToNumeric)new Ni(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),n=0;n0&&s==i.length&&e.push(a)})),t.globals.ignoreYAxisIndexes=e.map((function(t){return t}))}}]),t}(),Qi=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"svgStringToNode",value:function(t){return(new DOMParser).parseFromString(t,"image/svg+xml").documentElement}},{key:"scaleSvgNode",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,"width")),a=parseFloat(t.getAttributeNS(null,"height"));t.setAttributeNS(null,"width",i*e),t.setAttributeNS(null,"height",a*e),t.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"getSvgString",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t||a.config.chart.toolbar.export.scale||a.config.chart.toolbar.export.width/a.globals.svgWidth;s||(s=1);var r=a.globals.svgWidth*s,n=a.globals.svgHeight*s,o=a.globals.dom.elWrap.cloneNode(!0);o.style.width=r+"px",o.style.height=n+"px";var l=(new XMLSerializer).serializeToString(o),h="\n .apexcharts-tooltip, .apexcharts-toolbar, .apexcharts-xaxistooltip, .apexcharts-yaxistooltip, .apexcharts-xcrosshairs, .apexcharts-ycrosshairs, .apexcharts-zoom-rect, .apexcharts-selection-rect {\n display: none;\n }\n ";a.config.legend.show&&a.globals.dom.elLegendWrap&&a.globals.dom.elLegendWrap.children.length>0&&(h+=Zi);var c='\n \n \n
\n \n ").concat(l,"\n
\n
\n
\n "),d=e.svgStringToNode(c);1!==s&&e.scaleSvgNode(d,s),e.convertImagesToBase64(d).then((function(){c=(new XMLSerializer).serializeToString(d),i(c.replace(/ /g," "))}))}))}},{key:"convertImagesToBase64",value:function(t){var e=this,i=t.getElementsByTagName("image"),a=Array.from(i).map((function(t){var i=t.getAttributeNS("http://www.w3.org/1999/xlink","href");return i&&!i.startsWith("data:")?e.getBase64FromUrl(i).then((function(e){t.setAttributeNS("http://www.w3.org/1999/xlink","href",e)})).catch((function(t){console.error("Error converting image to base64:",t)})):Promise.resolve()}));return Promise.all(a)}},{key:"getBase64FromUrl",value:function(t){return new Promise((function(e,i){var a=new Image;a.crossOrigin="Anonymous",a.onload=function(){var t=document.createElement("canvas");t.width=a.width,t.height=a.height,t.getContext("2d").drawImage(a,0,0),e(t.toDataURL())},a.onerror=i,a.src=t}))}},{key:"svgUrl",value:function(){var t=this;return new Promise((function(e){t.getSvgString().then((function(t){var i=new Blob([t],{type:"image/svg+xml;charset=utf-8"});e(URL.createObjectURL(i))}))}))}},{key:"dataURI",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1,r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var n="transparent"!==a.config.chart.background&&a.config.chart.background?a.config.chart.background:"#fff",o=r.getContext("2d");o.fillStyle=n,o.fillRect(0,0,r.width*s,r.height*s),e.getSvgString(s).then((function(t){var e="data:image/svg+xml,"+encodeURIComponent(t),a=new Image;a.crossOrigin="anonymous",a.onload=function(){if(o.drawImage(a,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL("image/png");i({imgURI:e})}},a.src=e}))}))}},{key:"exportToSVG",value:function(){var t=this;this.svgUrl().then((function(e){t.triggerDownload(e,t.w.config.chart.toolbar.export.svg.filename,".svg")}))}},{key:"exportToPng",value:function(){var t=this,e=this.w.config.chart.toolbar.export.scale,i=this.w.config.chart.toolbar.export.width,a=e?{scale:e}:i?{width:i}:void 0;this.dataURI(a).then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+".png"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,".png")}))}},{key:"exportToCSV",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?",":s,n=t.lineDelimiter,o=void 0===n?"\n":n,l=this.w;i||(i=l.config.series);var h=[],c=[],d="",u=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),g=function(t){return"function"==typeof l.config.chart.toolbar.export.csv.categoryFormatter?l.config.chart.toolbar.export.csv.categoryFormatter(t):"datetime"===l.config.xaxis.type&&String(t).length>=10?new Date(t).toDateString():v.isNumber(t)?t:t.split(r).join("")},p=function(t){return"function"==typeof l.config.chart.toolbar.export.csv.valueFormatter?l.config.chart.toolbar.export.csv.valueFormatter(t):t},x=Math.max.apply(Math,f(i.map((function(t){return t.data?t.data.length:0})))),b=new Ji(this.ctx),m=new Ri(this.ctx),y=function(t){var i="";if(l.globals.axisCharts){if("category"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new $i(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=m.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;"datetime"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return null===i?"nullvalue":(Array.isArray(i)&&(i=i.join(" ")),v.isNumber(i)?i:i.split(r).join(""))},w=function(t,e){if(h.length&&0===e&&c.push(h.join(r)),t.data){t.data=t.data.length&&t.data||f(Array(x)).map((function(){return""}));for(var a=0;a0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),String(this.xaxisBorderWidth).indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return s(t,[{key:"drawXaxis",value:function(){var t=this.w,e=new Mi(this.ctx),i=e.group({class:"apexcharts-xaxis",transform:"translate(".concat(t.config.xaxis.offsetX,", ").concat(t.config.xaxis.offsetY,")")}),a=e.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,u=l.xaxisFontSize||this.xaxisFontSize,g=l.xaxisFontFamily||this.xaxisFontFamily,p=l.xaxisForeColors||this.xaxisForeColors,f=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,m=a.length,v="category"===d.config.xaxis.type?d.globals.dataPoints:m;if(0===v&&m>v&&(v=m),s){var y=Math.max(Number(d.config.xaxis.tickAmount)||1,v>1?v-1:v);n=d.globals.gridWidth/Math.min(y,m-1),b=b+r(0,n)/2+d.config.xaxis.labels.offsetX}else n=d.globals.gridWidth/v,b=b+r(0,n)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,n)/2+d.config.xaxis.labels.offsetX;0===s&&1===m&&n/2===b&&1===v&&(l=d.globals.gridWidth/2);var y=o.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,u,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&"top"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(u)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&"dataPoints"!==d.config.xaxis.tickAmount&&"datetime"!==d.config.xaxis.type?o.axesUtils.checkLabelBasedOnTickamount(s,y,m):o.axesUtils.checkForOverflowingLabels(s,y,m,h,c);if(d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:o.offY+d.config.xaxis.labels.offsetY+w-("top"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:"middle",fontWeight:y.isBold?600:f,fontSize:u,fontFamily:g,foreColor:Array.isArray(p)?t&&d.config.xaxis.convertedCatToNumeric?p[d.globals.minX+s-1]:p[s]:p,isPlainText:!1,cssClass:(t?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+x});if(i.add(k),k.on("click",(function(t){if("function"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,o.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,"title");A.textContent=Array.isArray(y.text)?y.text.join(" "):y.text,k.node.appendChild(A),""!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,"top"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var n=new Mi(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(n),n.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=a.globals.timescaleLabels.slice())}return s(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new Mi(this.ctx);t||(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){if(this.w.globals.axisCharts){var t=this.renderGrid();return this.drawGridArea(t.el),t}return null}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new Mi(this.ctx),a=Array.isArray(t.config.stroke.width)?Math.max.apply(Math,f(t.config.stroke.width)):t.config.stroke.width,s=function(t){var i=document.createElementNS(e.SVGNS,"clipPath");return i.setAttribute("id",t),i};e.dom.elGridRectMask=s("gridRectMask".concat(e.cuid)),e.dom.elGridRectBarMask=s("gridRectBarMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=s("gridRectMarkerMask".concat(e.cuid)),e.dom.elForecastMask=s("forecastMask".concat(e.cuid)),e.dom.elNonForecastMask=s("nonForecastMask".concat(e.cuid));var r=0,n=0;(["bar","rangeBar","candlestick","boxPlot"].includes(t.config.chart.type)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(r=Math.max(t.config.grid.padding.left,e.barPadForNumericAxis),n=Math.max(t.config.grid.padding.right,e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-2,-a/2-2,e.gridWidth+a+4,e.gridHeight+a+4,0,"#fff"),e.dom.elGridRectBar=i.drawRect(-a/2-r-2,-a/2-2,e.gridWidth+a+n+r+4,e.gridHeight+a+4,0,"#fff");var o=t.globals.markers.largestSize;e.dom.elGridRectMarker=i.drawRect(Math.min(-a/2-r-2,-o),-o,e.gridWidth+Math.max(a+n+r+4,2*o),e.gridHeight+2*o,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectBarMask.appendChild(e.dom.elGridRectBar.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var l=e.dom.baseEl.querySelector("defs");l.appendChild(e.dom.elGridRectMask),l.appendChild(e.dom.elGridRectBarMask),l.appendChild(e.dom.elGridRectMarkerMask),l.appendChild(e.dom.elForecastMask),l.appendChild(e.dom.elNonForecastMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,n=t.xCount,o=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===n-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||"radar"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:n,parent:o});var h=0;if(l.globals.hasXaxisGroups&&"between"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,u=0;d0&&"datetime"!==t.config.xaxis.type&&(s=e.yAxisScale[a].result.length-1);this._drawXYLines({xCount:s,tickAmount:r})}else s=r,r=e.xTickAmount,this._drawInvertedXYLines({xCount:s,tickAmount:r});return this.drawGridBands(s,r),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.gridWidth/s}}},{key:"drawGridBands",value:function(t,e){var i,a,s=this,r=this.w;if((null===(i=r.config.grid.row.colors)||void 0===i?void 0:i.length)>0&&function(t,i,a,n,o,l){for(var h=0,c=0;h=r.config.grid[t].colors.length&&(c=0),s._drawGridBandRect({c:c,x1:a,y1:n,x2:o,y2:l,type:t}),n+=r.globals.gridHeight/e}("row",e,0,0,r.globals.gridWidth,r.globals.gridHeight/e),(null===(a=r.config.grid.column.colors)||void 0===a?void 0:a.length)>0){var n=r.globals.isBarHorizontal||"on"!==r.config.xaxis.tickPlacement||"category"!==r.config.xaxis.type&&!r.config.xaxis.convertedCatToNumeric?t:t-1;r.globals.isXNumeric&&(n=r.globals.xAxisScale.result.length-1);for(var o=r.globals.padHorizontal,l=r.globals.padHorizontal+r.globals.gridWidth/n,h=r.globals.gridHeight,c=0,d=0;c=r.config.grid.column.colors.length&&(d=0),"datetime"===r.config.xaxis.type)o=this.xaxisLabels[c].position,l=((null===(u=this.xaxisLabels[c+1])||void 0===u?void 0:u.position)||r.globals.gridWidth)-this.xaxisLabels[c].position;this._drawGridBandRect({c:d,x1:o,y1:0,x2:l,y2:h,type:"column"}),o+=r.globals.gridWidth/n}}}}]),t}(),ea=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.coreUtils=new Pi(this.ctx)}return s(t,[{key:"niceScale",value:function(t,e){var i,a,s,r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=1e-11,l=this.w,h=l.globals;h.isBarHorizontal?(i=l.config.xaxis,a=Math.max((h.svgWidth-100)/25,2)):(i=l.config.yaxis[n],a=Math.max((h.svgHeight-100)/15,2)),v.isNumber(a)||(a=10),s=void 0!==i.min&&null!==i.min,r=void 0!==i.max&&null!==i.min;var c=void 0!==i.stepSize&&null!==i.stepSize,d=void 0!==i.tickAmount&&null!==i.tickAmount,u=d?i.tickAmount:h.niceScaleDefaultTicks[Math.min(Math.round(a/2),h.niceScaleDefaultTicks.length-1)];if(h.isMultipleYAxis&&!d&&h.multiAxisTickAmount>0&&(u=h.multiAxisTickAmount,d=!0),u="dataPoints"===u?h.dataPoints-1:Math.abs(Math.round(u)),(t===Number.MIN_VALUE&&0===e||!v.isNumber(t)&&!v.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)&&(t=v.isNumber(i.min)?i.min:0,e=v.isNumber(i.max)?i.max:t+u,h.allSeriesCollapsed=!1),t>e){console.warn("axis.min cannot be greater than axis.max: swapping min and max");var g=e;e=t,t=g}else t===e&&(t=0===t?0:t-1,e=0===e?2:e+1);var p=[];u<1&&(u=1);var f=u,x=Math.abs(e-t);!s&&t>0&&t/x<.15&&(t=0,s=!0),!r&&e<0&&-e/x<.15&&(e=0,r=!0);var b=(x=Math.abs(e-t))/f,m=b,y=Math.floor(Math.log10(m)),w=Math.pow(10,y),k=Math.ceil(m/w);if(b=m=(k=h.niceScaleAllowedMagMsd[0===h.yValueDecimal?0:1][k])*w,h.isBarHorizontal&&i.stepSize&&"datetime"!==i.type?(b=i.stepSize,c=!0):c&&(b=i.stepSize),c&&i.forceNiceScale){var A=Math.floor(Math.log10(b));b*=Math.pow(10,y-A)}if(s&&r){var C=x/f;if(d)if(c)if(0!=v.mod(x,b)){var S=v.getGCD(b,C);b=C/S<10?S:C}else 0==v.mod(b,C)?b=C:(C=b,d=!1);else b=C;else if(c)0==v.mod(x,b)?C=b:b=C;else if(0==v.mod(x,b))C=b;else{C=x/(f=Math.ceil(x/b));var L=v.getGCD(x,b);x/La&&(t=e-b*u,t+=b*Math.floor((M-t)/b))}else if(s)if(d)e=t+b*f;else{var P=e;e=b*Math.ceil(e/b),Math.abs(e-t)/v.getGCD(x,b)>a&&(e=t+b*u,e+=b*Math.ceil((P-e)/b))}}else if(h.isMultipleYAxis&&d){var I=b*Math.floor(t/b),T=I+b*f;T0&&t16&&v.getPrimeFactors(f).length<2&&f++,!d&&i.forceNiceScale&&0===h.yValueDecimal&&f>x&&(f=x,b=Math.round(x/f)),f>a&&(!d&&!c||i.forceNiceScale)){var z=v.getPrimeFactors(f),X=z.length-1,R=f;t:for(var E=0;EN);return{result:p,niceMin:p[0],niceMax:p[p.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,r=Math.abs(e-t),n=[];if(t===e)return{result:n=[t],niceMin:n[0],niceMax:n[n.length-1]};"dataPoints"===(i=this._adjustTicksForSmallRange(i,a,r))&&(i=this.w.globals.dataPoints-1),s||(s=r/i),s=Math.round(100*(s+Number.EPSILON))/100,i===Number.MAX_VALUE&&(i=5,s=1);for(var o=t;i>=0;)n.push(o),o=v.preciseAddition(o,s),i-=1;return{result:n,niceMin:n[0],niceMax:n[n.length-1]}}},{key:"logarithmicScaleNice",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase)):i!==-Number.MAX_VALUE&&v.isNumber(i)&&e!==Number.MAX_VALUE&&v.isNumber(e)?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.niceScale(e,i,t)):a.yAxisScale[t]=this.niceScale(Number.MIN_VALUE,0,t)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals;if(e!==-Number.MAX_VALUE&&v.isNumber(e)){var s=a.xTickAmount;a.xAxisScale=this.linearScale(t,e,s,0,void 0===i.config.xaxis.max?i.config.xaxis.stepSize:void 0)}else a.xAxisScale=this.linearScale(0,10,10);return a.xAxisScale}},{key:"scaleMultipleYAxes",value:function(){var t=this,e=this.w.config,i=this.w.globals;this.coreUtils.setSeriesYAxisMappings();var a=i.seriesYAxisMap,s=i.minYArr,r=i.maxYArr;i.allSeriesCollapsed=!0,i.barGroups=[],a.forEach((function(a,n){var o=[];a.forEach((function(t){var i,a=null===(i=e.series[t])||void 0===i?void 0:i.group;o.indexOf(a)<0&&o.push(a)})),a.length>0?function(){var l,h,c=Number.MAX_VALUE,d=-Number.MAX_VALUE,u=c,g=d;if(e.chart.stacked)!function(){var t=new Array(i.dataPoints).fill(0),s=[],r=[],p=[];o.forEach((function(){s.push(t.map((function(){return Number.MIN_VALUE}))),r.push(t.map((function(){return Number.MIN_VALUE}))),p.push(t.map((function(){return Number.MIN_VALUE})))}));for(var f=function(t){!l&&e.series[a[t]].type&&(l=e.series[a[t]].type);var c=a[t];h=e.series[c].group?e.series[c].group:"axis-".concat(n),!(i.collapsedSeriesIndices.indexOf(c)<0&&i.ancillaryCollapsedSeriesIndices.indexOf(c)<0)||(i.allSeriesCollapsed=!1,o.forEach((function(t,a){if(e.series[c].group===t)for(var n=0;n=0?r[a][n]+=o:p[a][n]+=o,s[a][n]+=o,u=Math.min(u,o),g=Math.max(g,o)}}))),"bar"!==l&&"column"!==l||i.barGroups.push(h)},x=0;x1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,n=-Number.MAX_VALUE,o=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;"candlestick"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):"boxPlot"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);var d=!1;if(r.seriesX.length>=a){var u,g=null===(u=r.brushSource)||void 0===u?void 0:u.w.config.chart.brush;(s.chart.zoom.enabled&&s.chart.zoom.autoScaleYaxis||null!=g&&g.enabled&&null!=g&&g.autoScaleYaxis)&&(d=!0)}for(var p=t;px&&r.seriesX[p][b]>s.xaxis.max;b--);}for(var m=x;m<=b&&m(null===(A=h[p])||void 0===A?void 0:A[m])&&(null===(C=h[p])||void 0===C?void 0:C[m])<0&&(o=h[p][m])}else r.hasNullValues=!0}"bar"!==f&&"column"!==f||(o<0&&n<0&&(n=0,i=Math.max(i,0)),o===Number.MIN_VALUE&&(o=0,e=Math.min(e,0)))}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(o=e),"bar"===s.chart.type&&(o<0&&n<0&&(n=0),o===Number.MIN_VALUE&&(o=0)),{minY:o,maxY:n,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i,a=Number.MAX_VALUE;if(t.isMultipleYAxis){a=Number.MAX_VALUE;for(var s=0;st.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1);else if("dataPoints"===e.xaxis.tickAmount){if(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric){var s=Math.round(t.maxX-t.minX);s<30&&(a=s)}}else a=e.xaxis.tickAmount;if(t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var r=[],n=t.minX-1;n0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1,0,e.xaxis.stepSize),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}}))}},{key:"_setStackedMinMax",value:function(){var t=this,e=this.w.globals;if(e.series.length){var i=e.seriesGroups;i.length||(i=[this.w.globals.seriesNames.map((function(t){return t}))]);var a={},s={};i.forEach((function(i){a[i]=[],s[i]=[],t.w.config.series.map((function(t,a){return i.indexOf(e.seriesNames[a])>-1?a:null})).filter((function(t){return null!==t})).forEach((function(r){for(var n=0;n0?a[i][n]+=parseFloat(e.series[r][n])+1e-4:s[i][n]+=parseFloat(e.series[r][n]))}}))})),Object.entries(a).forEach((function(t){var i=p(t,1)[0];a[i].forEach((function(t,r){e.maxY=Math.max(e.maxY,a[i][r]),e.minY=Math.min(e.minY,s[i][r])}))}))}}}]),t}(),aa=function(){function t(e,a){i(this,t),this.ctx=e,this.elgrid=a,this.w=e.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xAxisoffX="bottom"===s.config.xaxis.position?s.globals.gridHeight:0,this.drawnLabels=[],this.axesUtils=new Ri(e)}return s(t,[{key:"drawYaxis",value:function(t){var e=this.w,i=new Mi(this.ctx),a=e.config.yaxis[t].labels.style,s=a.fontSize,r=a.fontFamily,n=a.fontWeight,o=i.group({class:"apexcharts-yaxis",rel:t,transform:"translate(".concat(e.globals.translateYAxisX[t],", 0)")});if(this.axesUtils.isYAxisHidden(t))return o;var l=i.group({class:"apexcharts-yaxis-texts-g"});o.add(l);var h=e.globals.yAxisScale[t].result.length-1,c=e.globals.gridHeight/h,d=e.globals.yLabelFormatters[t],u=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice());if(e.config.yaxis[t].labels.show){var g=e.globals.translateY+e.config.yaxis[t].labels.offsetY;e.globals.isBarHorizontal?g=0:"heatmap"===e.config.chart.type&&(g-=c/2),g+=parseInt(s,10)/3;for(var p=h;p>=0;p--){var f=d(u[p],p,e),x=e.config.yaxis[t].labels.padding;e.config.yaxis[t].opposite&&0!==e.config.yaxis.length&&(x*=-1);var b=this.getTextAnchor(e.config.yaxis[t].labels.align,e.config.yaxis[t].opposite),m=this.axesUtils.getYAxisForeColor(a.colors,t),y=Array.isArray(m)?m[p]:m,w=v.listToArray(e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-label tspan"))).map((function(t){return t.textContent})),k=i.drawText({x:x,y:g,text:w.includes(f)&&!e.config.yaxis[t].labels.showDuplicates?"":f,textAnchor:b,fontSize:s,fontFamily:r,fontWeight:n,maxWidth:e.config.yaxis[t].labels.maxWidth,foreColor:y,isPlainText:!1,cssClass:"apexcharts-yaxis-label ".concat(a.cssClass)});l.add(k),this.addTooltip(k,f),0!==e.config.yaxis[t].labels.rotate&&this.rotateLabel(i,k,firstLabel,e.config.yaxis[t].labels.rotate),g+=c}}return this.addYAxisTitle(i,o,t),this.addAxisBorder(i,o,t,h,c),o}},{key:"getTextAnchor",value:function(t,e){return"left"===t?"start":"center"===t?"middle":"right"===t?"end":e?"start":"end"}},{key:"addTooltip",value:function(t,e){var i=document.createElementNS(this.w.globals.SVGNS,"title");i.textContent=Array.isArray(e)?e.join(" "):e,t.node.appendChild(i)}},{key:"rotateLabel",value:function(t,e,i,a){var s=t.rotateAroundCenter(i.node),r=t.rotateAroundCenter(e.node);e.node.setAttribute("transform","rotate(".concat(a," ").concat(s.x," ").concat(r.y,")"))}},{key:"addYAxisTitle",value:function(t,e,i){var a=this.w;if(void 0!==a.config.yaxis[i].title.text){var s=t.group({class:"apexcharts-yaxis-title"}),r=a.config.yaxis[i].opposite?a.globals.translateYAxisX[i]:0,n=t.drawText({x:r,y:a.globals.gridHeight/2+a.globals.translateY+a.config.yaxis[i].title.offsetY,text:a.config.yaxis[i].title.text,textAnchor:"end",foreColor:a.config.yaxis[i].title.style.color,fontSize:a.config.yaxis[i].title.style.fontSize,fontWeight:a.config.yaxis[i].title.style.fontWeight,fontFamily:a.config.yaxis[i].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text ".concat(a.config.yaxis[i].title.style.cssClass)});s.add(n),e.add(s)}}},{key:"addAxisBorder",value:function(t,e,i,a,s){var r=this.w,n=r.config.yaxis[i].axisBorder,o=31+n.offsetX;if(r.config.yaxis[i].opposite&&(o=-31-n.offsetX),n.show){var l=t.drawLine(o,r.globals.translateY+n.offsetY-2,o,r.globals.gridHeight+r.globals.translateY+n.offsetY+2,n.color,0,n.width);e.add(l)}r.config.yaxis[i].axisTicks.show&&this.axesUtils.drawYAxisTicks(o,a,n,r.config.yaxis[i].axisTicks,i,s,e)}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new Mi(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,n=e.globals.gridWidth/r+.1,o=n+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice()),c=e.globals.timescaleLabels;if(c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),e.config.xaxis.labels.show)for(var d=c.length?0:r;c.length?d=0;c.length?d++:d--){var u=l(h[d],d,e),g=e.globals.gridWidth+e.globals.padHorizontal-(o-n+e.config.xaxis.labels.offsetX);if(c.length){var p=this.axesUtils.getLabel(h,c,g,d,this.drawnLabels,this.xaxisFontSize);g=p.x,u=p.text,this.drawnLabels.push(p.text),0===d&&e.globals.skipFirstTimelinelabel&&(u=""),d===h.length-1&&e.globals.skipLastTimelinelabel&&(u="")}var f=i.drawText({x:g,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label ".concat(e.config.xaxis.labels.style.cssClass)});s.add(f),f.tspan(u),this.addTooltip(f,u),o+=n}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new Mi(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new Mi(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text ".concat(e.config.xaxis.title.style.cssClass)});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new Mi(this.ctx),s=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g")),r=s?s.getBoundingClientRect():{width:0,height:0},n=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text")),o=n?n.getBoundingClientRect():{width:0,height:0};if(n){var l=this.xPaddingForYAxisTitle(t,r,o,e);n.setAttribute("x",l.xPos-(e?10:0));var h=a.rotateAroundCenter(n);n.setAttribute("transform","rotate(".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:r,padd:0}:(a?r=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2:(r=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,r=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:r,padd:n})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.forEach((function(o,l){var h=i.globals.ignoreYAxisIndexes.includes(l)||!o.show||o.floating||0===t[l].width,c=t[l].width+e[l].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+n,h||(n+=c+20),i.globals.translateYAxisX[l]=s-o.labels.offsetX+20):(a=i.globals.translateX-r,h||(r+=c+20),i.globals.translateYAxisX[l]=a+o.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w;v.listToArray(t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis")).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&!a.floating&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=v.listToArray(t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"))),n=s.getBoundingClientRect();r.forEach((function(t){t.setAttribute("text-anchor",a.labels.align)})),"left"!==a.labels.align||a.opposite?"center"===a.labels.align?s.setAttribute("transform","translate(".concat(n.width/2*(a.opposite?1:-1),", 0)")):"right"===a.labels.align&&a.opposite&&s.setAttribute("transform","translate(".concat(n.width,", 0)")):s.setAttribute("transform","translate(-".concat(n.width,", 0)"))}}))}}]),t}(),sa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.documentEvent=v.bind(this.documentEvent,this)}return s(t,[{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=v.extend(Hi,i);this.w.globals.locale=a.options}}]),t}(),na=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"drawAxis",value:function(t,e){var i,a,s=this,r=this.w.globals,n=this.w.config,o=new Ki(this.ctx,e),l=new aa(this.ctx,e);r.axisCharts&&"radar"!==t&&(r.isBarHorizontal?(a=l.drawYaxisInversed(0),i=o.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=o.drawXaxis(),r.dom.elGraphical.add(i),n.yaxis.map((function(t,e){if(-1===r.ignoreYAxisIndexes.indexOf(e)&&(a=l.drawYaxis(e),r.dom.Paper.add(a),"back"===s.w.config.grid.position)){var i=r.dom.Paper.children()[1];i.remove(),r.dom.Paper.add(i)}}))))}}]),t}(),oa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new Mi(this.ctx),i=new Li(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,n=a.colorFrom,o=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,u=s.left,g=s.top,p=s.blur,f=s.color,x=s.opacity,b=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===r&&(b=e.drawGradient("vertical",n,o,l,h,null,c,null));var m=e.drawRect();1===t.config.xaxis.crosshairs.width&&(m=e.drawLine());var y=t.globals.gridHeight;(!v.isNumber(y)||y<0)&&(y=0);var w=t.config.xaxis.crosshairs.width;(!v.isNumber(w)||w<0)&&(w=0),m.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:y,width:w,height:y,fill:b,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(m=i.dropShadow(m,{left:u,top:g,blur:p,color:f,opacity:x})),t.globals.dom.elGraphical.add(m)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new Mi(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(r)}}]),t}(),la=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new Wi({}),n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,n=window.innerWidth>0?window.innerWidth:screen.width;if(n>a){var o=v.clone(i.globals.initialConfig);o.series=v.clone(i.config.series);var l=Pi.extendArrayProps(r,o,i);t=v.extend(l,t),t=v.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var h=0;h0&&"function"==typeof t[0]?(this.isColorFn=!0,i.config.series.map((function(a,s){var r=t[s]||t[0];return"function"==typeof r?r({value:i.globals.axisCharts?i.globals.series[s][0]||0:i.globals.series[s],seriesIndex:s,dataPointIndex:s,w:e.w}):r}))):t:this.predefined()}},{key:"applySeriesColors",value:function(t,e){t.forEach((function(t,i){t&&(e[i]=t)}))}},{key:"getMonochromeColors",value:function(t,e,i){var a=t.color,s=t.shadeIntensity,r=t.shadeTo,n=this.isBarDistributed||this.isHeatmapDistributed?e[0].length*e.length:e.length,o=1/(n/s),l=0;return Array.from({length:n},(function(){var t="dark"===r?i.shadeColor(-1*l,a):i.shadeColor(l,a);return l+=o,t}))}},{key:"applyColorTypes",value:function(t,e){var i=this,a=this.w;t.forEach((function(t){a.globals[t].colors=void 0===a.config[t].colors?i.isColorFn?a.config.colors:e:a.config[t].colors.slice(),i.pushExtraColors(a.globals[t].colors)}))}},{key:"applyDataLabelsColors",value:function(t){var e=this.w;e.globals.dataLabels.style.colors=void 0===e.config.dataLabels.style.colors?t:e.config.dataLabels.style.colors.slice(),this.pushExtraColors(e.globals.dataLabels.style.colors,50)}},{key:"applyRadarPolygonsColors",value:function(){var t=this.w;t.globals.radarPolygons.fill.colors=void 0===t.config.plotOptions.radar.polygons.fill.colors?["dark"===t.config.theme.mode?"#343A3F":"none"]:t.config.plotOptions.radar.polygons.fill.colors.slice(),this.pushExtraColors(t.globals.radarPolygons.fill.colors,20)}},{key:"applyMarkersColors",value:function(t){var e=this.w;e.globals.markers.colors=void 0===e.config.markers.colors?t:e.config.markers.colors.slice(),this.pushExtraColors(e.globals.markers.colors)}},{key:"pushExtraColors",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getDatalabelsRect",value:function(){var t=this,e=this.w,i=[];e.config.series.forEach((function(s,r){s.data.forEach((function(s,n){var o;o=e.globals.series[r][n],a=e.config.dataLabels.formatter(o,{ctx:t.dCtx.ctx,seriesIndex:r,dataPointIndex:n,w:e}),i.push(a)}))}));var a=v.getLargestStringFromArr(i),s=new Mi(this.dCtx.ctx),r=e.config.dataLabels.style,n=s.getTextRects(a,parseInt(r.fontSize),r.fontFamily);return{width:1.05*n.width,height:n.height}}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,f(a));i=e[a.indexOf(s)]}return i}}]),t}(),ua=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=v.getLargestStringFromArr(i),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(n=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var o=new Xi(this.dCtx.ctx),l=r;r=o.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new zi(this.dCtx.ctx).formatDate,w:e}),n=o.xLabelFormat(s,n,l,{i:void 0,dateFormatter:new zi(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(n=r="1");var h=new Mi(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==n&&(d=h.getTextRects(n,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var u=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};c=u(r),r!==n&&(d=u(n)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var t,e=this.w;if(!e.globals.hasXaxisGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=v.getLargestStringFromArr(s),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),o=new Mi(this.dCtx.ctx),l=o.getTextRects(r,a),h=l;return r!==n&&(h=o.getTextRects(n,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new Mi(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new Mi(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,n=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,o){s.yaxis.length>1&&function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)}(o)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var o=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+n/1.75-e.dCtx.yAxisWidthRight,h=o.position-n/1.75+e.dCtx.yAxisWidthLeft,c="right"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||"bar"!==s.chart.type&&"candlestick"!==s.chart.type&&"rangeBar"!==s.chart.type&&"boxPlot"!==s.chart.type?10:n/1.75)&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.right(null===(a=String(c(e,o)))||void 0===a?void 0:a.length)?t:e}),d),g=u=c(u,o);if(void 0!==u&&0!==u.length||(u=l.niceMax),e.globals.isBarHorizontal){a=0;var p=e.globals.labels.slice();u=v.getLargestStringFromArr(p),u=c(u,{seriesIndex:n,dataPointIndex:-1,w:e}),g=t.dCtx.dimHelpers.getLargestStringFromMultiArr(u,p)}var f=new Mi(t.dCtx.ctx),x="rotate(".concat(r.labels.rotate," 0 0)"),b=f.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1),m=b;u!==g&&(m=f.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1)),i.push({width:(h>m.width||h>b.width?h:m.width>b.width?m.width:b.width)+a,height:m.height>b.height?m.height:b.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new Mi(t.dCtx.ctx),r="rotate(".concat(e.title.rotate," 0 0)"),n=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:n.width,height:n.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new Ri(this.dCtx.ctx),n=function(n,o){var l=t.config.yaxis[o].floating,h=0;n.width>0&&!l?(h=n.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(o)&&(h=h-n.width-s)):h=l||r.isYAxisHidden(o)?0:5,t.config.yaxis[o].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){n(t,e)})),t.globals.yTitleCoords.map((function(t,e){n(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),pa=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:"gridPadForColumnsInNumericAxis",value:function(t){var e=this.w,i=e.config,a=e.globals;if(a.noData||a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.series.length)return 0;var s=function(t){return["bar","rangeBar","candlestick","boxPlot"].includes(t)},r=i.chart.type,n=0,o=s(r)?i.series.length:1;a.comboBarCount>0&&(o=a.comboBarCount),a.collapsedSeries.forEach((function(t){s(t.type)&&(o-=1)})),i.chart.stacked&&(o=1);var l=s(r)||a.comboBarCount>0,h=Math.abs(a.initialMaxX-a.initialMinX);if(l&&a.isXNumeric&&!a.isBarHorizontal&&o>0&&0!==h){h<=3&&(h=a.dataPoints);var c=h/t,d=a.minXDiff&&a.minXDiff/c>0?a.minXDiff/c:0;d>t/2&&(d/=2),(n=d*parseInt(i.plotOptions.bar.columnWidth,10)/100)<1&&(n=1),a.barPadForNumericAxis=n}return n}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!i.axisCharts?0:10;["title","subtitle"].forEach((function(s){void 0!==e.config[s].text?a+=e.config[s].margin:a+=t.dCtx.isSparkline||!i.axisCharts?0:5})),!e.config.legend.show||"bottom"!==e.config.legend.position||e.config.legend.floating||i.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight-=s.height+r.height+a,i.translateY+=s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new Ri(this.dCtx.ctx);i.config.yaxis.forEach((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX-=e[r].width+t[r].width+parseInt(s.labels.style.fontSize,10)/1.2+12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),fa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new da(this),this.dimYAxis=new ga(this),this.dimXAxis=new ua(this),this.dimGrid=new pa(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return s(t,[{key:"plotCoords",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.datalabelsCoords={width:0,height:0};var a=Array.isArray(e.config.stroke.width)?Math.max.apply(Math,f(e.config.stroke.width)):e.config.stroke.width;this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=p(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),this.gridPad.top=Math.max(a/2,this.gridPad.top),this.gridPad.bottom=Math.max(a/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var s=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*s,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(s>0?s:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();i.isSlopeChart&&(this.datalabelsCoords=this.dimHelpers.getDatalabelsRect()),e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),n=this.dimXAxis.getxAxisGroupLabelsCoords(),o=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,o,n),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-o.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;("radar"===e.config.chart.type||this.isSparkline)&&(l=0,h=0),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||"treemap"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||"treemap"===e.config.chart.type||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l+t.datalabelsCoords.width,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||"treemap"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l-2*t.datalabelsCoords.width};switch("top"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=c,d();break;case"top":i.translateY=this.lgRect.height+c,d();break;case"left":i.translateY=c,i.translateX=this.lgRect.width+l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width;break;case"right":i.translateY=c,i.translateX=l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new aa(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,n=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating){e.gridHeight=e.svgHeight;var o=e.dom.elWrap.getBoundingClientRect().width;return e.gridWidth=Math.min(o,e.gridHeight),e.translateY=r,void(e.translateX=n+(e.svgWidth-e.gridWidth)/2)}switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+t.height+e.height,n=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,o=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&"bottom"===a.config.legend.position?10:0;this.xAxisHeight=r*n+s*o+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),xa=function(){function t(e){i(this,t),this.w=e.w,this.lgCtx=e}return s(t,[{key:"getLegendStyles",value:function(){var t,e,i,a=document.createElement("style");a.setAttribute("type","text/css");var s=(null===(t=this.lgCtx.ctx)||void 0===t||null===(e=t.opts)||void 0===e||null===(i=e.chart)||void 0===i?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute("nonce",s);var r=document.createTextNode(Zi);return a.appendChild(r),a}},{key:"getLegendDimensions",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"appendToForeignObject",value:function(){var t=this.w.globals;!1!==this.w.config.chart.injectStyleSheet&&t.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:"toggleDataSeries",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||"radialBar"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var n=a.globals.dom.Paper.findOne(" .apexcharts-series[rel='".concat(t+1,"'] path")),o=a.config.chart.type;if("pie"===o||"polarArea"===o||"donut"===o){var l=a.config.plotOptions.pie.donut.labels;new Mi(this.lgCtx.ctx).pathMouseDown(n,null),this.lgCtx.ctx.pie.printDataLabelsInner(n.node,l)}n.fire("click")}}},{key:"getSeriesAfterCollapsing",value:function(t){var e=t.realIndex,i=this.w,a=i.globals,s=v.clone(i.config.series);if(a.axisCharts){var r=i.config.yaxis[a.seriesYAxisReverseMap[e]],n={index:e,data:s[e].data.slice(),type:s[e].type||i.config.chart.type};if(r&&r.show&&r.showAlways)a.ancillaryCollapsedSeriesIndices.indexOf(e)<0&&(a.ancillaryCollapsedSeries.push(n),a.ancillaryCollapsedSeriesIndices.push(e));else if(a.collapsedSeriesIndices.indexOf(e)<0){a.collapsedSeries.push(n),a.collapsedSeriesIndices.push(e);var o=a.risingSeries.indexOf(e);a.risingSeries.splice(o,1)}}else a.collapsedSeries.push({index:e,data:s[e]}),a.collapsedSeriesIndices.push(e);return a.allSeriesCollapsed=a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.config.series.length,this._getSeriesBasedOnCollapsedState(s)}},{key:"hideSeries",value:function(t){for(var e=t.seriesEl,i=t.realIndex,a=this.w,s=this.getSeriesAfterCollapsing({realIndex:i}),r=e.childNodes,n=0;n0){for(var r=0;r1;if(this.legendHelpers.appendToForeignObject(),(a||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"createLegendMarker",value:function(t){var e=t.i,i=t.fillcolor,a=this.w,s=document.createElement("span");s.classList.add("apexcharts-legend-marker");var r=a.config.legend.markers.shape||a.config.markers.shape,n=r;Array.isArray(r)&&(n=r[e]);var o=Array.isArray(a.config.legend.markers.size)?parseFloat(a.config.legend.markers.size[e]):parseFloat(a.config.legend.markers.size),l=Array.isArray(a.config.legend.markers.offsetX)?parseFloat(a.config.legend.markers.offsetX[e]):parseFloat(a.config.legend.markers.offsetX),h=Array.isArray(a.config.legend.markers.offsetY)?parseFloat(a.config.legend.markers.offsetY[e]):parseFloat(a.config.legend.markers.offsetY),c=Array.isArray(a.config.legend.markers.strokeWidth)?parseFloat(a.config.legend.markers.strokeWidth[e]):parseFloat(a.config.legend.markers.strokeWidth),d=s.style;if(d.height=2*(o+c)+"px",d.width=2*(o+c)+"px",d.left=l+"px",d.top=h+"px",a.config.legend.markers.customHTML)d.background="transparent",d.color=i[e],Array.isArray(a.config.legend.markers.customHTML)?a.config.legend.markers.customHTML[e]&&(s.innerHTML=a.config.legend.markers.customHTML[e]()):s.innerHTML=a.config.legend.markers.customHTML();else{var g=new Vi(this.ctx).getMarkerConfig({cssClass:"apexcharts-legend-marker apexcharts-marker apexcharts-marker-".concat(n),seriesIndex:e,strokeWidth:c,size:o}),p=window.SVG().addTo(s).size("100%","100%"),f=new Mi(this.ctx).drawMarker(0,0,u(u({},g),{},{pointFillColor:Array.isArray(i)?i[e]:g.pointFillColor,shape:n}));a.globals.dom.Paper.find(".apexcharts-legend-marker.apexcharts-marker").forEach((function(t){t.node.classList.contains("apexcharts-marker-triangle")?t.node.style.transform="translate(50%, 45%)":t.node.style.transform="translate(50%, 50%)"})),p.add(f)}return s}},{key:"drawLegends",value:function(){var t=this,e=this,i=this.w,a=i.config.legend.fontFamily,s=i.globals.seriesNames,r=i.config.legend.markers.fillColors?i.config.legend.markers.fillColors.slice():i.globals.colors.slice();if("heatmap"===i.config.chart.type){var n=i.config.plotOptions.heatmap.colorScale.ranges;s=n.map((function(t){return t.name?t.name:t.from+" - "+t.to})),r=n.map((function(t){return t.color}))}else this.isBarsDistributed&&(s=i.globals.labels.slice());i.config.legend.customLegendItems.length&&(s=i.config.legend.customLegendItems);var o=i.globals.legendFormatter,l=i.config.legend.inverseOrder,h=[];i.globals.seriesGroups.length>1&&i.config.legend.clusterGroupedSeries&&i.globals.seriesGroups.forEach((function(t,e){h[e]=document.createElement("div"),h[e].classList.add("apexcharts-legend-group","apexcharts-legend-group-".concat(e)),"horizontal"===i.config.legend.clusterGroupedSeriesOrientation?i.globals.dom.elLegendWrap.classList.add("apexcharts-legend-group-horizontal"):h[e].classList.add("apexcharts-legend-group-vertical")}));for(var c=function(e){var n,l=o(s[e],{seriesIndex:e,w:i}),c=!1,d=!1;if(i.globals.collapsedSeries.length>0)for(var u=0;u0)for(var g=0;g=0:d<=s.length-1;l?d--:d++)c(d);i.globals.dom.elWrap.addEventListener("click",e.onLegendClick,!0),i.config.legend.onItemHover.highlightDataSeries&&0===i.config.legend.customLegendItems.length&&(i.globals.dom.elWrap.addEventListener("mousemove",e.onLegendHovered,!0),i.globals.dom.elWrap.addEventListener("mouseout",e.onLegendHovered,!0))}},{key:"setLegendWrapXY",value:function(t,e){var i=this.w,a=i.globals.dom.elLegendWrap,s=a.clientHeight,r=0,n=0;if("bottom"===i.config.legend.position)n=i.globals.svgHeight-Math.min(s,i.globals.svgHeight/2)-5;else if("top"===i.config.legend.position){var o=new fa(this.ctx),l=o.dimHelpers.getTitleSubtitleCoords("title").height,h=o.dimHelpers.getTitleSubtitleCoords("subtitle").height;n=(l>0?l-10:0)+(h>0?h-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,n=n+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=n+"px","right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px");["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.elLegendWrap.style.right=0;var e=new fa(this.ctx),i=e.dimHelpers.getTitleSubtitleCoords("title"),a=e.dimHelpers.getTitleSubtitleCoords("subtitle"),s=0;"top"===t.config.legend.position&&(s=i.height+a.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,s)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendDimensions(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-series")||t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new $i(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new $i(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains("apexcharts-legend-series")||t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(t.target.getAttribute("rel"),10)-1,a="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;"function"==typeof r&&t.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),"treemap"!==e.config.chart.type&&"heatmap"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ma=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=a.globals.minX,this.maxX=a.globals.maxX}return s(t,[{key:"createToolbar",value:function(){var t=this,e=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=e.config.chart.toolbar.offsetY+"px",a.style.right=3-e.config.chart.toolbar.offsetX+"px",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\n \n \n\n'),n("zoomOut",this.elZoomOut,'\n \n \n\n');var o=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:"zoom"===i?t.elZoom:t.elSelection,icon:"string"==typeof t.t[i]?t.t[i]:"zoom"===i?'\n \n \n \n':'\n \n \n',title:t.localeValues["zoom"===i?"selectionZoom":"selection"],class:"apexcharts-".concat(i,"-icon")})};o("zoom"),o("selection"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'\n \n \n \n \n \n \n \n',title:this.localeValues.pan,class:"apexcharts-pan-icon"}),n("reset",this.elZoomReset,'\n \n \n'),this.t.download&&r.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var l=0;lthis.wheelDelay&&(this.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a),this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout((function(){a-i.globals.lastWheelExecution>e.wheelDelay&&(e.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a)}),this.debounceDelay)}},{key:"executeMouseWheelZoom",value:function(t){var e,i=this.w;this.minX=i.globals.isRangeBar?i.globals.minY:i.globals.minX,this.maxX=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;var a=null===(e=this.gridRect)||void 0===e?void 0:e.getBoundingClientRect();if(a){var s,r,n,o=(t.clientX-a.left)/a.width,l=this.minX,h=this.maxX,c=h-l;if(t.deltaY<0){var d=l+o*c;r=d-(s=.5*c)/2,n=d+s/2}else r=l-(s=1.5*c)/2,n=h+s/2;if(!i.globals.isRangeBar){r=Math.max(r,i.globals.initialMinX),n=Math.min(n,i.globals.initialMaxX);var u=.01*(i.globals.initialMaxX-i.globals.initialMinX);if(n-r0&&i.height>0&&(this.selectionRect.select(!1).resize(!1),this.selectionRect.select({createRot:function(){},updateRot:function(){},createHandle:function(t,e,i,a,s){return"l"===s||"r"===s?t.circle(8).css({"stroke-width":1,stroke:"#333",fill:"#fff"}):t.circle(0)},updateHandle:function(t,e){return t.center(e[0],e[1])}}).resize().on("resize",(function(){var i=e.globals.zoomEnabled?e.config.chart.zoom.type:e.config.chart.selection.type;t.handleMouseUp({zoomtype:i,isResized:!0})})))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(u(u({},t.globals.selection),{},{translateX:t.globals.translateX,translateY:t.globals.translateY}));else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a=t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i;t.globals.isRangeBar&&(i=(t.config.chart.selection.xaxis.min-t.globals.yAxisScale[0].niceMin)/e.invertedYRatio,a=(t.config.chart.selection.xaxis.max-t.config.chart.selection.xaxis.min)/e.invertedYRatio);var s={x:i,y:0,width:a,height:t.globals.gridHeight,translateX:t.globals.translateX,translateY:t.globals.translateY,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,n=void 0===r?0:r,o=t.translateY,l=void 0===o?0:o,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var u={transform:"translate("+n+", "+l+")"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":h.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":h.config.chart.zoom.zoomedArea.stroke.opacity}),Mi.setAttrs(c.node,u)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,"fill-opacity":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,"stroke-width":h.config.chart.selection.stroke.width,"stroke-dasharray":h.config.chart.selection.stroke.dashArray,"stroke-opacity":h.config.chart.selection.stroke.opacity}),Mi.setAttrs(d.node,u))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),n=s.startX-1,o=s.startY,l=!1,h=!1,c=s.clientX-r.left-a.globals.barPadForNumericAxis,d=s.clientY-r.top,g=c-n,p=d-o,f={translateX:a.globals.translateX,translateY:a.globals.translateY};return Math.abs(g+n)>a.globals.gridWidth?g=a.globals.gridWidth-n:c<0&&(g=n),n>c&&(l=!0,g=Math.abs(g)),o>d&&(h=!0,p=Math.abs(p)),f=u(u({},f="x"===i?{x:l?n-g:n,y:0,width:g,height:a.globals.gridHeight}:"y"===i?{x:0,y:h?o-p:o,width:a.globals.gridWidth,height:p}:{x:l?n-g:n,y:h?o-p:o,width:g,height:p}),{},{translateX:a.globals.translateX,translateY:a.globals.translateY}),s.drawSelectionRect(f),s.selectionDragging("resizing"),f}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w;if(e){e.preventDefault();var s=e.detail,r=s.handler,n=s.box,o=n.x,l=n.y;othis.constraints.x2&&(o=this.constraints.x2-n.w),n.y2>this.constraints.y2&&(l=this.constraints.y2-n.h),r.move(o,l);var h=this.xyRatios,c=this.selectionRect,d=0;"resizing"===t&&(d=30);var u=function(t){return parseFloat(c.node.getAttribute(t))},g={x:u("x"),y:u("y"),width:u("width"),height:u("height")};a.globals.selection=g,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t,e,s,r,n=i.gridRect.getBoundingClientRect(),o=c.node.getBoundingClientRect();a.globals.isRangeBar?(t=a.globals.yAxisScale[0].niceMin+(o.left-n.left)*h.invertedYRatio,e=a.globals.yAxisScale[0].niceMin+(o.right-n.left)*h.invertedYRatio,s=0,r=1):(t=a.globals.xAxisScale.niceMin+(o.left-n.left)*h.xRatio,e=a.globals.xAxisScale.niceMin+(o.right-n.left)*h.xRatio,s=a.globals.yAxisScale[0].niceMin+(n.bottom-o.bottom)*h.yRatio[0],r=a.globals.yAxisScale[0].niceMax-(o.top-n.top)*h.yRatio[0]);var l={xaxis:{min:t,max:e},yaxis:{min:s,max:r}};a.config.chart.events.selection(i.ctx,l),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,l)}),d))}}},{key:"selectionDrawn",value:function(t){var e,i,a=t.context,s=t.zoomtype,r=this.w,n=a,o=this.xyRatios,l=this.ctx.toolbar,h=r.globals.zoomEnabled?n.zoomRect.node.getBoundingClientRect():n.selectionRect.node.getBoundingClientRect(),c=n.gridRect.getBoundingClientRect(),d=h.left-c.left-r.globals.barPadForNumericAxis,u=h.right-c.left-r.globals.barPadForNumericAxis,g=h.top-c.top,p=h.bottom-c.top;r.globals.isRangeBar?(e=r.globals.yAxisScale[0].niceMin+d*o.invertedYRatio,i=r.globals.yAxisScale[0].niceMin+u*o.invertedYRatio):(e=r.globals.xAxisScale.niceMin+d*o.xRatio,i=r.globals.xAxisScale.niceMin+u*o.xRatio);var f=[],x=[];if(r.config.yaxis.forEach((function(t,e){var i=r.globals.seriesYAxisMap[e][0],a=r.globals.yAxisScale[e].niceMax-o.yRatio[i]*g,s=r.globals.yAxisScale[e].niceMax-o.yRatio[i]*p;f.push(a),x.push(s)})),n.dragged&&(n.dragX>10||n.dragY>10)&&e!==i)if(r.globals.zoomEnabled){var b=v.clone(r.globals.initialConfig.yaxis),m=v.clone(r.globals.initialConfig.xaxis);if(r.globals.zoomed=!0,r.config.xaxis.convertedCatToNumeric&&(e=Math.floor(e),i=Math.floor(i),e<1&&(e=1,i=r.globals.dataPoints),i-e<2&&(i=e+1)),"xy"!==s&&"x"!==s||(m={min:e,max:i}),"xy"!==s&&"y"!==s||b.forEach((function(t,e){b[e].min=x[e],b[e].max=f[e]})),l){var y=l.getBeforeZoomRange(m,b);y&&(m=y.xaxis?y.xaxis:m,b=y.yaxis?y.yaxis:b)}var w={xaxis:m};r.config.chart.group||(w.yaxis=b),n.ctx.updateHelpers._updateOptions(w,!1,n.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof r.config.chart.events.zoomed&&l.zoomCallback(m,b)}else if(r.globals.selectionEnabled){var k,A=null;k={min:e,max:i},"xy"!==s&&"y"!==s||(A=v.clone(r.config.yaxis)).forEach((function(t,e){A[e].min=x[e],A[e].max=f[e]})),r.globals.selection=n.selection,"function"==typeof r.config.chart.events.selection&&r.config.chart.events.selection(n.ctx,{xaxis:k,yaxis:A})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var n=i.globals.isRangeBar?i.globals.minY:i.globals.minX,o=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;a.panScrolled(n,o)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=v.clone(i.globals.initialConfig.yaxis),r=a.xRatio,n=i.globals.minX,o=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,n=i.globals.minY,o=i.globals.maxY),"left"===this.moveDirection?(t=n+i.globals.gridWidth/15*r,e=o+i.globals.gridWidth/15*r):"right"===this.moveDirection&&(t=n-i.globals.gridWidth/15*r,e=o-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=n,e=o);var l={xaxis:{min:t,max:e}};i.config.chart.group||(l.yaxis=s),this.updateScrolledChart(l,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;if(this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled){var s={xaxis:{min:e,max:i}};a.config.chart.events.scrolled(this.ctx,s),this.ctx.events.fireEvent("scrolled",s)}}}]),a}(ma),ya=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return s(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,n=i.getBoundingClientRect(),o=n.width,l=n.height,h=o/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=o/r.globals.dataPoints);var u=a-n.left-r.globals.barPadForNumericAxis,g=s-n.top;u<0||g<0||u>o||g>l?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var p=Math.round(u/h),f=Math.floor(g/c);d&&!r.config.xaxis.convertedCatToNumeric&&(p=Math.ceil(u/h),p-=1);var x=null,b=null,m=r.globals.seriesXvalues.map((function(t){return t.filter((function(t){return v.isNumber(t)}))})),y=r.globals.seriesYvalues.map((function(t){return t.filter((function(t){return v.isNumber(t)}))}));if(r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=u*(w.width/o),A=g*(w.height/l);x=(b=this.closestInMultiArray(k,A,m,y)).index,p=b.j,null!==x&&r.globals.hasNullValues&&(m=r.globals.seriesXvalues[x],p=(b=this.closestInArray(k,m)).j)}return r.globals.capturedSeriesIndex=null===x?-1:x,(!p||p<1)&&(p=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=f:r.globals.capturedDataPointIndex=p,{capturedSeries:x,j:r.globals.isBarHorizontal?f:p,hoverX:u,hoverY:g}}},{key:"getFirstActiveXArray",value:function(t){for(var e=this.w,i=0,a=t.map((function(t,e){return t.length>0?e:-1})),s=0;s0)for(var a=0;a *")):this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *")}},{key:"getAllMarkers",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");i=f(i),e&&(i=i.filter((function(e){var i=Number(e.getAttribute("data:realIndex"));return-1===t.w.globals.collapsedSeriesIndices.indexOf(i)}))),i.sort((function(t,e){var i=Number(t.getAttribute("data:realIndex")),a=Number(e.getAttribute("data:realIndex"));return ai?-1:0}));var a=[];return i.forEach((function(t){a.push(t.querySelector(".apexcharts-marker"))})),a}},{key:"hasMarkers",value:function(t){return this.getElMarkers(t).length>0}},{key:"getPathFromPoint",value:function(t,e){var i=Number(t.getAttribute("cx")),a=Number(t.getAttribute("cy")),s=t.getAttribute("shape");return new Mi(this.ctx).getMarkerPath(i,a,s,e)}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(i.attrs.name,""),e+="
".concat(i.val,"
")})),m.innerHTML=t+"",v.innerHTML=e+""};n?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(m.innerHTML="",v.innerHTML=""):y()}else m.innerHTML="",v.innerHTML="";null!==p&&(a[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=l.config.tooltip.z.title,a[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=void 0!==p?p:"");if(n&&f[0]){if(l.config.tooltip.hideEmptySeries){var w=a[e].querySelector(".apexcharts-tooltip-marker"),k=a[e].querySelector(".apexcharts-tooltip-text");0==parseFloat(c)?(w.style.display="none",k.style.display="none"):(w.style.display="block",k.style.display="block")}null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1||Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)?f[0].parentNode.style.display="none":f[0].parentNode.style.display=l.config.tooltip.items.display}else Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)&&(f[0].parentNode.style.display="none")}},{key:"toggleActiveInactiveSeries",value:function(t,e){var i=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var a=i.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group-".concat(e));a&&(a.classList.add("apexcharts-active"),a.style.display=i.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",n="",o=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&"treemap"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=new Ji(this.ctx).isFormatXY()?void 0!==a.config.series[e].data[i]?a.config.series[e].data[i].x:"":void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?r=new Xi(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new zi(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(o=c(a.globals.seriesZ[e][i],a)),n="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(n)?n.join(" "):n,zVal:o}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,n=this.ttCtx.getElTooltip(),o=r.config.tooltip.custom;Array.isArray(o)&&o[e]&&(o=o[e]);var l=o({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r});"string"==typeof l||"number"==typeof l?n.innerHTML=l:(l instanceof Element||"string"==typeof l.nodeName)&&(n.innerHTML="",n.appendChild(l.cloneNode(!0)))}}]),t}(),ka=function(){function t(e){i(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return s(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,n=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/n*e),null===s||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var o=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&Mi.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&Mi.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new Mi(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect(),n=r.height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=r.width),s-=n/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)&&s>0&&s2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),n=s.tooltipRect,o=null!==i?parseFloat(i):1,l=parseFloat(t)+o+5,h=parseFloat(e)+o/2;if(l>a.globals.gridWidth/2&&(l=l-n.ttWidth-o-10),l>a.globals.gridWidth-n.ttWidth-10&&(l=a.globals.gridWidth-n.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid().getBoundingClientRect();(l=s.e.clientX-c.left)>a.globals.gridWidth/2&&(l-=s.tooltipRect.ttWidth),(h=s.e.clientY+a.globals.translateY-c.top)>a.globals.gridHeight/2&&(h-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||n.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-n.ttHeight+a.globals.translateY);isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=h+"px")}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r0){var g=u.getAttribute("shape"),p=l.getMarkerPath(s,r,g,1.5*c);u.setAttribute("d",p)}this.moveXCrosshairs(s),o.fixedTooltip||this.moveTooltip(s,r,c)}}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,n=a.globals.pointsArray,o=new $i(this.ctx),l=new Mi(this.ctx);e=o.getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var h=i.tooltipUtil.getHoverMarkerSize(e);if(n[e]&&(s=n[e][t][0],r=n[e][t][1]),!isNaN(s)){var c=i.tooltipUtil.getAllMarkers();if(c.length)for(var d=0;d0){var b=l.getMarkerPath(s,g,f,h);c[d].setAttribute("d",b)}else c[d].setAttribute("d","")}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,h)}}},{key:"moveStickyTooltipOverBars",value:function(t,e){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length;i.config.chart.stacked&&(s=i.globals.barGroups.length);var r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new $i(this.ctx).getActiveConfigSeriesIndex("desc")+1);var n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"']"));n||"number"!=typeof e||(n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"']")));var o=n?parseFloat(n.getAttribute("cx")):0,l=n?parseFloat(n.getAttribute("cy")):0,h=n?parseFloat(n.getAttribute("barWidth")):0,c=a.getElGrid().getBoundingClientRect(),d=n&&(n.classList.contains("apexcharts-candlestick-area")||n.classList.contains("apexcharts-boxPlot-area"));i.globals.isXNumeric?(n&&!d&&(o-=s%2!=0?h/2:0),n&&d&&(o-=h/2)):i.globals.isBarHorizontal||(o=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(o)&&(o=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?l-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?l=a.e.clientY-c.top-a.tooltipRect.ttHeight/2:l+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(l=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(o),a.fixedTooltip||this.moveTooltip(o,l||i.globals.gridHeight)}}]),t}(),Aa=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ka(e)}return s(t,[{key:"drawDynamicPoints",value:function(){var t=this.w,e=new Mi(this.ctx),i=new Vi(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=f(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute("data:realIndex"))-parseFloat(e.getAttribute("data:realIndex"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),n=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,n=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var o=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(r,n,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),n=e.config.markers.hover.size,o=0;o0){var a=this.ttCtx.tooltipUtil.getPathFromPoint(t[e],i);t[e].setAttribute("d",a)}else t[e].setAttribute("d","M0,0")}}}]),t}(),Ca=function(){function t(e){i(this,t),this.w=e.w;var a=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!a.globals.isBarHorizontal&&"rangeBar"===a.config.chart.type&&a.config.plotOptions.bar.rangeBarGroupRows}return s(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTreeTooltip",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,n=this.ttCtx,o=this.w;if(e.target.classList.contains("apexcharts-".concat(r,"-rect"))){var l=this.getAttr(e,"i"),h=this.getAttr(e,"j"),c=this.getAttr(e,"cx"),d=this.getAttr(e,"cy"),u=this.getAttr(e,"width"),g=this.getAttr(e,"height");if(n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),o.globals.capturedSeriesIndex=l,o.globals.capturedDataPointIndex=h,a=c+n.tooltipRect.ttWidth/2+u,s=d+n.tooltipRect.ttHeight/2-g/2,n.tooltipPosition.moveXCrosshairs(c+u/2),a>o.globals.gridWidth/2&&(a=c-n.tooltipRect.ttWidth/2+u),n.w.config.tooltip.followCursor){var p=o.globals.dom.elWrap.getBoundingClientRect();a=o.globals.clientX-p.left-(a>o.globals.gridWidth/2?n.tooltipRect.ttWidth:0),s=o.globals.clientY-p.top-(s>o.globals.gridHeight/2?n.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,n=t.y,o=this.w,l=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),c=parseInt(s.paths.getAttribute("cy"),10),d=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,l.intersect){var u=v.findAncestor(s.paths,"apexcharts-series");u&&(e=parseInt(u.getAttribute("data:realIndex"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&o.config.tooltip.shared,e:a}),"mouseup"===a.type&&l.markerClick(a,e,i),o.globals.capturedSeriesIndex=e,o.globals.capturedDataPointIndex=i,r=h,n=c+o.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var g=l.getElGrid().getBoundingClientRect();n=l.e.clientY+o.globals.translateY-g.top}d<0&&(n=c),l.marker.enlargeCurrentPoint(i,s.paths,r,n)}return{x:r,y:n}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});if(null!==d.j||0!==d.barHeight||0!==d.barWidth){e=d.i;var u=d.j;if(r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-n.tooltipRect.ttHeight),parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),h+n.tooltipRect.ttWidth>r.globals.gridWidth?h-=n.tooltipRect.ttWidth:h<0&&(h=0),n.w.config.tooltip.followCursor){var g=n.getElGrid().getBoundingClientRect();c=n.e.clientY-g.top}null===n.tooltip&&(n.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?n.tooltipPosition.moveXCrosshairs(l+i/2):n.tooltipPosition.moveXCrosshairs(l)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars())&&(c=c+r.globals.translateY-n.tooltipRect.ttHeight/2,o.style.left=h+r.globals.translateX+"px",o.style.top=c+"px")}}},{key:"getBarTooltipXY",value:function(t){var e=this,i=t.e,a=t.opt,s=this.w,r=null,n=this.ttCtx,o=0,l=0,h=0,c=0,d=0,u=i.target.classList;if(u.contains("apexcharts-bar-area")||u.contains("apexcharts-candlestick-area")||u.contains("apexcharts-boxPlot-area")||u.contains("apexcharts-rangebar-area")){var g=i.target,p=g.getBoundingClientRect(),f=a.elGrid.getBoundingClientRect(),x=p.height;d=p.height;var b=p.width,m=parseInt(g.getAttribute("cx"),10),v=parseInt(g.getAttribute("cy"),10);c=parseFloat(g.getAttribute("barWidth"));var y="touchmove"===i.type?i.touches[0].clientX:i.clientX;r=parseInt(g.getAttribute("j"),10),o=parseInt(g.parentNode.getAttribute("rel"),10)-1;var w=g.getAttribute("data-range-y1"),k=g.getAttribute("data-range-y2");s.globals.comboCharts&&(o=parseInt(g.parentNode.getAttribute("data:realIndex"),10));var A=function(t){return s.globals.isXNumeric?m-b/2:e.isVerticalGroupedRangeBar?m+b/2:m-n.dataPointsDividedWidth+b/2},C=function(){return v-n.dataPointsDividedHeight+x/2-n.tooltipRect.ttHeight/2};n.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:o,j:r,y1:w?parseInt(w,10):null,y2:k?parseInt(k,10):null,shared:!n.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(l=y-f.left+15,h=C()):(l=A(),h=i.clientY-f.top-n.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((l=m)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals,n=r.seriesYAxisMap[t];if(a.yaxisTooltips[t]&&n.length>0){var o=r.yLabelFormatters[t],l=a.getElGrid().getBoundingClientRect(),h=n[0],c=0;i.yRatio.length>1&&(c=h);var d=(e-l.top)*i.yRatio[c],u=r.maxYArr[h]-r.minYArr[h],g=r.minYArr[h]+(u-d);s.config.yaxis[t].reversed&&(g=r.maxYArr[h]-(u-d)),a.tooltipPosition.moveYCrosshairs(e-l.top),a.yaxisTooltipText[t].innerHTML=o(g),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),La=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.tConfig=a.config.tooltip,this.tooltipUtil=new ya(this),this.tooltipLabels=new wa(this),this.tooltipPosition=new ka(this),this.marker=new Aa(this),this.intersect=new Ca(this),this.axesTooltip=new Sa(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!a.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return s(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme||"light")),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new Ki(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&"rangeBar"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var n=document.createElement("div");n.classList.add("apexcharts-tooltip-series-group","apexcharts-tooltip-series-group-".concat(r)),n.style.order=i.config.tooltip.inverseOrder?t-r:r+1;var o=document.createElement("span");o.classList.add("apexcharts-tooltip-marker"),i.config.tooltip.fillSeriesColor?o.style.backgroundColor=i.globals.colors[r]:o.style.color=i.globals.colors[r];var l=i.config.markers.shape,h=l;Array.isArray(l)&&(h=l[r]),o.setAttribute("shape",h),n.appendChild(o);var c=document.createElement("div");c.classList.add("apexcharts-tooltip-text"),c.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,c.style.fontSize=e.tConfig.style.fontSize,["y","goals","z"].forEach((function(t){var e=document.createElement("div");e.classList.add("apexcharts-tooltip-".concat(t,"-group"));var i=document.createElement("span");i.classList.add("apexcharts-tooltip-text-".concat(t,"-label")),e.appendChild(i);var a=document.createElement("span");a.classList.add("apexcharts-tooltip-text-".concat(t,"-value")),e.appendChild(a),c.appendChild(e)})),n.appendChild(c),s.appendChild(n),a.push(n)},n=0;n0&&this.addPathsEventListeners(g,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),o.indexOf("bottom")>-1&&(n=n+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=n+"px",{x:r,y:n,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=20?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),20-a))}},{key:"seriesHover",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,n=this.getElTooltip(e);if(n){if(i.tooltipRect={x:0,y:0,ttWidth:n.getBoundingClientRect().width,ttHeight:n.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new $i(e).toggleSeriesOnHover(s,s.target.parentNode);r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}),i.fixedTooltip&&i.drawFixedTooltipRect()}}},{key:"axisChartsTooltips",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,n=s.elGrid.getBoundingClientRect(),o="touchmove"===a.type?a.touches[0].clientX:a.clientX,l="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=o,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,ln.top+n.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),u=[];r.config.chart.group&&(u=this.ctx.getSyncedCharts());var g=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if("mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add("apexcharts-active");var p=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&p.length&&this.ycrosshairs.classList.add("apexcharts-active"),g&&!this.showOnIntersect||u.length>1)this.handleStickyTooltip(a,o,l,s);else if("heatmap"===r.config.chart.type||"treemap"===r.config.chart.type){var f=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=f.x,i=f.y,c.style.left=e+"px",c.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var x=0;xl.width)this.handleMouseOut(a);else if(null!==o)this.handleStickyCapturedSeries(t,o,a,n);else if(this.tooltipUtil.isXoverlap(n)||s.globals.isBarHorizontal){var h=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,h,n,a.ttItems)}}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);if(void 0!==s.globals.series[e][a])this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,r,a,i.ttItems)}}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new Mi(this.ctx),i=t.globals.dom.Paper.find(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,A=this.w,C=e;"mouseup"===t.type&&this.markerClick(t,i,a),null===k&&(k=this.tConfig.shared);var S=this.tooltipUtil.hasMarkers(i),L=this.tooltipUtil.getElBars(),M=function(){A.globals.markers.largestSize>0?C.marker.enlargePoints(a):C.tooltipPosition.moveDynamicPointsOnHover(a)};if(A.config.legend.tooltipHoverFormatter){var P=A.config.legend.tooltipHoverFormatter,I=Array.from(this.legendLabels);I.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var T=0;T0)){var H=new Mi(this.ctx),O=A.globals.dom.Paper.find(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),C.tooltipUtil.getAllMarkers(!0).length&&!this.barSeriesHeight&&M(),C.tooltipPosition.moveStickyTooltipOverBars(a,i);for(var F=0;F0&&i.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(g-=c*A)),k){g=g+u.height/2-m/2-2}var S=i.globals.series[a][s]<0,L=l;switch(this.barCtx.isReversed&&(L=l+(S?d:-d)),x.position){case"center":p=k?S?L-d/2+y:L+d/2-y:S?L-d/2+u.height/2+y:L+d/2+u.height/2-y;break;case"bottom":p=k?S?L-d+y:L+d-y:S?L-d+u.height+m+y:L+d-u.height/2+m-y;break;case"top":p=k?S?L+y:L-y:S?L-u.height/2-y:L+u.height+y}var M=L;if(i.globals.seriesGroups.forEach((function(t){var i;null===(i=e.barCtx[t.join(",")])||void 0===i||i.prevY.forEach((function(t){M=S?Math.max(t[s],M):Math.min(t[s],M)}))})),this.barCtx.lastActiveBarSerieIndex===r&&b.enabled){var P=new Mi(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),f.fontSize);n=S?M-P.height/2-y-b.offsetY+18:M+P.height+y+b.offsetY-18;var I=C;o=w+(i.globals.isXNumeric?-c*i.globals.barGroups.length/2:i.globals.barGroups.length*c/2-(i.globals.barGroups.length-1)*c-I)+b.offsetX}return i.config.chart.stacked||(p<0?p=0+m:p+u.height/3>i.globals.gridHeight&&(p=i.globals.gridHeight-m)),{bcx:h,bcy:l,dataLabelsX:g,dataLabelsY:p,totalDataLabelsX:o,totalDataLabelsY:n,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this,i=this.w,a=t.x,s=t.i,r=t.j,n=t.realIndex,o=t.bcy,l=t.barHeight,h=t.barWidth,c=t.textRects,d=t.dataLabelsX,u=t.strokeWidth,g=t.dataLabelsConfig,p=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,x=t.offX,b=t.offY,m=i.globals.gridHeight/i.globals.dataPoints,v=this.barCtx.barHelpers.getZeroValueEncounters({i:s,j:r}).zeroEncounters;h=Math.abs(h);var y,w,k=o-(this.barCtx.isRangeBar?0:m)+l/2+c.height/2+b-3;!i.config.chart.stacked&&v>0&&i.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(k-=l*v);var A="start",C=i.globals.series[s][r]<0,S=a;switch(this.barCtx.isReversed&&(S=a+(C?-h:h),A=C?"start":"end"),p.position){case"center":d=C?S+h/2-x:Math.max(c.width/2,S-h/2)+x;break;case"bottom":d=C?S+h-u-x:S-h+u+x;break;case"top":d=C?S-u-x:S-u+x}var L=S;if(i.globals.seriesGroups.forEach((function(t){var i;null===(i=e.barCtx[t.join(",")])||void 0===i||i.prevX.forEach((function(t){L=C?Math.min(t[r],L):Math.max(t[r],L)}))})),this.barCtx.lastActiveBarSerieIndex===n&&f.enabled){var M=new Mi(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:n,j:r}),g.fontSize);C?(y=L-u-x-f.offsetX,A="end"):y=L+x+f.offsetX+(this.barCtx.isReversed?-(h+u):u),w=k-c.height/2+M.height/2+f.offsetY+u,i.globals.barGroups.length>1&&(w-=i.globals.barGroups.length/2*(l/2))}return i.config.chart.stacked||("start"===g.textAnchor?d-c.width<0?d=C?c.width+u:u:d+c.width>i.globals.gridWidth&&(d=C?i.globals.gridWidth-u:i.globals.gridWidth-c.width-u):"middle"===g.textAnchor?d-c.width/2<0?d=c.width/2+u:d+c.width/2>i.globals.gridWidth&&(d=i.globals.gridWidth-c.width/2-u):"end"===g.textAnchor&&(d<1?d=c.width+u:d+1>i.globals.gridWidth&&(d=i.globals.gridWidth-c.width-u))),{bcx:a,bcy:o,dataLabelsX:d,dataLabelsY:k,totalDataLabelsX:y,totalDataLabelsY:w,totalDataLabelsAnchor:A}}},{key:"drawCalculatedDataLabels",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.i,r=t.j,n=t.textRects,o=t.barHeight,l=t.barWidth,h=t.dataLabelsConfig,c=this.w,d="rotate(0)";"vertical"===c.config.plotOptions.bar.dataLabels.orientation&&(d="rotate(-90, ".concat(e,", ").concat(i,")"));var g=new qi(this.barCtx.ctx),p=new Mi(this.barCtx.ctx),f=h.formatter,x=null,b=c.globals.collapsedSeriesIndices.indexOf(s)>-1;if(h.enabled&&!b){x=p.group({class:"apexcharts-data-labels",transform:d});var m="";void 0!==a&&(m=f(a,u(u({},c),{},{seriesIndex:s,dataPointIndex:r,w:c}))),!a&&c.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(m="");var v=c.globals.series[s][r]<0,y=c.config.plotOptions.bar.dataLabels.position;if("vertical"===c.config.plotOptions.bar.dataLabels.orientation&&("top"===y&&(h.textAnchor=v?"end":"start"),"center"===y&&(h.textAnchor="middle"),"bottom"===y&&(h.textAnchor=v?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)lMath.abs(l)&&(m=""):n.height/1.6>Math.abs(o)&&(m=""));var w=u({},h);this.barCtx.isHorizontal&&a<0&&("start"===h.textAnchor?w.textAnchor="end":"end"===h.textAnchor&&(w.textAnchor="start")),g.plotDataLabelsText({x:e,y:i,text:m,i:s,j:r,parent:x,dataLabelsConfig:w,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:"drawTotalDataLabels",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.realIndex,r=t.textAnchor,n=t.barTotalDataLabelsConfig;this.w;var o,l=new Mi(this.barCtx.ctx);return n.enabled&&void 0!==e&&void 0!==i&&this.barCtx.lastActiveBarSerieIndex===s&&(o=l.drawText({x:e,y:i,foreColor:n.style.color,text:a,textAnchor:r,fontFamily:n.style.fontFamily,fontSize:n.style.fontSize,fontWeight:n.style.fontWeight})),o}}]),t}(),Pa=function(){function t(e){i(this,t),this.w=e.w,this.barCtx=e}return s(t,[{key:"initVariables",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(s=h.globals.minXDiff/u),(n=s/d*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(n=1)}if(-1===String(this.barCtx.barOptions.columnWidth).indexOf("%")&&(n=parseInt(this.barCtx.barOptions.columnWidth,10)),o=h.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?h.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.translationsIndex]:0),h.globals.isXNumeric)e=this.barCtx.getBarXForNumericXAxis({x:e,j:0,realIndex:t,barWidth:n}).x;else e=h.globals.padHorizontal+v.noExponents(s-n*this.barCtx.seriesLen)/2}return h.globals.barHeight=r,h.globals.barWidth=n,{x:e,y:i,yDivision:a,xDivision:s,barHeight:r,barWidth:n,zeroH:o,zeroW:l}}},{key:"initializeStackedPrevVars",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]}))}},{key:"initializeStackedXYVars",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]}))}},{key:"getPathFillColor",value:function(t,e,i,a){var s,r,n,o,l=this.w,h=this.barCtx.ctx.fill,c=null,d=this.barCtx.barOptions.distributed?i:e,u=!1;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color,u=!0)}));return{color:h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(n=r.fill)&&void 0!==n&&n.type?null===(o=l.config.series[e].data[i])||void 0===o?void 0:o.fill.type:Array.isArray(l.config.fill.type)?l.config.fill.type[a]:l.config.fill.type}),useRangeColor:u}}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]||"bar"===s.config.chart.type&&!this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"createBorderRadiusArr",value:function(t){var e,i=this.w,a=!this.w.config.chart.stacked||i.config.plotOptions.bar.borderRadius<=0,s=t.length,n=0|(null===(e=t[0])||void 0===e?void 0:e.length),o=Array.from({length:s},(function(){return Array(n).fill(a?"top":"none")}));if(a)return o;for(var l=0;l0?(h.push(u),d++):g<0&&(c.push(u),d++)}if(h.length>0&&0===c.length)if(1===h.length)o[h[0]][l]="both";else{var p,f=h[0],x=h[h.length-1],b=r(h);try{for(b.s();!(p=b.n()).done;){var m=p.value;o[m][l]=m===f?"bottom":m===x?"top":"none"}}catch(t){b.e(t)}finally{b.f()}}else if(c.length>0&&0===h.length)if(1===c.length)o[c[0]][l]="both";else{var v,y=Math.max.apply(Math,c),w=Math.min.apply(Math,c),k=r(c);try{for(k.s();!(v=k.n()).done;){var A=v.value;o[A][l]=A===y?"bottom":A===w?"top":"none"}}catch(t){k.e(t)}finally{k.f()}}else if(h.length>0&&c.length>0){var C,S=h[h.length-1],L=r(h);try{for(L.s();!(C=L.n()).done;){var M=C.value;o[M][l]=M===S?"top":"none"}}catch(t){L.e(t)}finally{L.f()}var P,I=Math.max.apply(Math,c),T=r(c);try{for(T.s();!(P=T.n()).done;){var z=P.value;o[z][l]=z===I?"bottom":"none"}}catch(t){T.e(t)}finally{T.f()}}else if(1===d){o[h[0]||c[0]][l]="both"}}return o}},{key:"barBackground",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,n=t.y2,o=t.elSeries,l=this.w,h=new Mi(this.barCtx.ctx),c=new $i(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],u=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==n?n:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(u),u.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,n=t.strokeWidth,o=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,u=t.j,g=t.w,p=new Mi(this.barCtx.ctx);(n=Array.isArray(n)?n[c]:n)||(n=0);var f=i,x=a;null!==(e=g.config.series[c].data[u])&&void 0!==e&&e.columnWidthOffset&&(x=a-g.config.series[c].data[u].columnWidthOffset/2,f=i+g.config.series[c].data[u].columnWidthOffset);var b=n/2,m=x+b,v=x+f-b,y=(l[d][u]>=0?1:-1)*(o?-1:1);s+=.001-b*y,r+=.001+b*y;var w=p.move(m,s),k=p.move(m,s),A=p.line(v,s);if(g.globals.previousPaths.length>0&&(k=this.barCtx.getPreviousPath(c,u,!1)),w=w+p.line(m,r)+p.line(v,r)+A+("around"===g.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[c][u]?" Z":" z"),k=k+p.line(m,s)+A+A+A+A+A+p.line(m,s)+("around"===g.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[c][u]?" Z":" z"),"none"!==this.arrBorderRadius[c][u]&&(w=p.roundPathCorners(w,g.config.plotOptions.bar.borderRadius)),g.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).yArrj.push(r-b*y),C.yArrjF.push(Math.abs(s-r+n*y)),C.yArrjVal.push(this.barCtx.series[d][u])}return{pathTo:w,pathFrom:k}}},{key:"getBarpaths",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,n=t.strokeWidth,o=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,u=t.j,g=t.w,p=new Mi(this.barCtx.ctx);(n=Array.isArray(n)?n[c]:n)||(n=0);var f=i,x=a;null!==(e=g.config.series[c].data[u])&&void 0!==e&&e.barHeightOffset&&(f=i-g.config.series[c].data[u].barHeightOffset/2,x=a+g.config.series[c].data[u].barHeightOffset);var b=n/2,m=f+b,v=f+x-b,y=(l[d][u]>=0?1:-1)*(o?-1:1);s+=.001+b*y,r+=.001-b*y;var w=p.move(s,m),k=p.move(s,m);g.globals.previousPaths.length>0&&(k=this.barCtx.getPreviousPath(c,u,!1));var A=p.line(s,v);if(w=w+p.line(r,m)+p.line(r,v)+A+("around"===g.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[c][u]?" Z":" z"),k=k+p.line(s,m)+A+A+A+A+A+p.line(s,m)+("around"===g.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[c][u]?" Z":" z"),"none"!==this.arrBorderRadius[c][u]&&(w=p.roundPathCorners(w,g.config.plotOptions.bar.borderRadius)),g.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).xArrj.push(r+b*y),C.xArrjF.push(Math.abs(s-r-n*y)),C.xArrjVal.push(this.barCtx.series[d][u])}return{pathTo:w,pathFrom:k}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,a=0;a2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),i}},{key:"getYForValue",value:function(t,e,i){var a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[i]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[i]:0)),a}},{key:"getGoalValues",value:function(t,e,i,a,s,r){var n=this,l=this.w,h=[],c=function(a,s){var l;h.push((o(l={},t,"x"===t?n.getXForValue(a,e,!1):n.getYForValue(a,i,r,!1)),o(l,"attrs",s),l))};if(l.globals.seriesGoals[a]&&l.globals.seriesGoals[a][s]&&Array.isArray(l.globals.seriesGoals[a][s])&&l.globals.seriesGoals[a][s].forEach((function(t){c(t.value,t)})),this.barCtx.barOptions.isDumbbell&&l.globals.seriesRange.length){var d=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:l.globals.colors,g={strokeHeight:"x"===t?0:l.globals.markers.size[a],strokeWidth:"x"===t?l.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(d[a])?d[a][0]:d[a]};c(l.globals.seriesRangeStart[a][s],g),c(l.globals.seriesRangeEnd[a][s],u(u({},g),{},{strokeColor:Array.isArray(d[a])?d[a][1]:d[a]}))}return h}},{key:"drawGoalLine",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,n=t.barHeight,o=new Mi(this.barCtx.ctx),l=o.group({className:"apexcharts-bar-goals-groups"});l.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr("clip-path","url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid,")"));var h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){if(t.x>=-1&&t.x<=o.w.globals.gridWidth+1){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:n/2,a=i+e+n/2;h=o.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)}})):Array.isArray(s)&&s.forEach((function(t){if(t.y>=-1&&t.y<=o.w.globals.gridHeight+1){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=o.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)}})),l}},{key:"drawBarShadow",value:function(t){var e=t.prevPaths,i=t.currPaths,a=t.color,s=this.w,r=e.x,n=e.x1,o=e.barYPosition,l=i.x,h=i.x1,c=i.barYPosition,d=o+i.barHeight,u=new Mi(this.barCtx.ctx),g=new v,p=u.move(n,d)+u.line(r,d)+u.line(l,c)+u.line(h,c)+u.line(n,d)+("around"===s.config.plotOptions.bar.borderRadiusApplication||"both"===this.arrBorderRadius[realIndex][j]?" Z":" z");return u.drawPath({d:p,fill:g.shadeColor(.5,v.rgb2hex(a)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadow apexcharts-decoration-element"})}},{key:"getZeroValueEncounters",value:function(t){var e,i=t.i,a=t.j,s=this.w,r=0,n=0;return(s.config.plotOptions.bar.horizontal?s.globals.series.map((function(t,e){return e})):(null===(e=s.globals.columnSeries)||void 0===e?void 0:e.i.map((function(t){return t})))||[]).forEach((function(t){var e=s.globals.seriesPercent[t][a];e&&r++,t-1})),a=this.barCtx.columnGroupIndices,s=a.indexOf(i);return s<0&&(a.push(i),s=a.length-1),{groupIndex:i,columnGroupIndex:s}}}]),t}(),Ia=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isRangeBar=s.globals.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!s.globals.isBarHorizontal&&s.globals.seriesRange.length&&s.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.xyRatios=a,null!==this.xyRatios&&(this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.invertedXRatio=a.invertedXRatio,this.invertedYRatio=a.invertedYRatio,this.baseLineY=a.baseLineY,this.baseLineInvertedY=a.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[];var r=new $i(this.ctx);this.lastActiveBarSerieIndex=r.getActiveConfigSeriesIndex("desc",["bar","column"]),this.columnGroupIndices=[];var n=r.getBarSeriesIndices(),o=new Pi(this.ctx);this.stackedSeriesTotals=o.getStackedSeriesTotals(this.w.config.series.map((function(t,e){return-1===n.indexOf(e)?e:-1})).filter((function(t){return-1!==t}))),this.barHelpers=new Pa(this)}return s(t,[{key:"draw",value:function(t,e){var i=this.w,a=new Mi(this.ctx),s=new Pi(this.ctx,i);t=s.getLogSeries(t),this.series=t,this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var r=a.group({class:"apexcharts-bar-series apexcharts-plot-series"});i.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(var n=0,o=0;n0&&(this.visibleI=this.visibleI+1);var w=0,k=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[b],this.translationsIndex=b);var A=this.translationsIndex;this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var C=this.barHelpers.initialPositions(b);p=C.y,w=C.barHeight,h=C.yDivision,d=C.zeroW,g=C.x,k=C.barWidth,l=C.xDivision,c=C.zeroH,this.isHorizontal||x.push(g+k/2);var S=a.group({class:"apexcharts-datalabels","data:realIndex":b});i.globals.delayedElements.push({el:S.node}),S.node.classList.add("apexcharts-element-hidden");var L=a.group({class:"apexcharts-bar-goals-markers"}),M=a.group({class:"apexcharts-bar-shadows"});i.globals.delayedElements.push({el:M.node}),M.node.classList.add("apexcharts-element-hidden");for(var P=0;P0){var R,E=this.barHelpers.drawBarShadow({color:"string"==typeof X.color&&-1===(null===(R=X.color)||void 0===R?void 0:R.indexOf("url"))?X.color:v.hexToRgba(i.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:T});if(M.add(E),i.config.chart.dropShadow.enabled)new Li(this.ctx).dropShadow(E,i.config.chart.dropShadow,b)}this.pathArr.push(T);var Y=this.barHelpers.drawGoalLine({barXPosition:T.barXPosition,barYPosition:T.barYPosition,goalX:T.goalX,goalY:T.goalY,barHeight:w,barWidth:k});Y&&L.add(Y),p=T.y,g=T.x,P>0&&x.push(g+k/2),f.push(p),this.renderSeries(u(u({realIndex:b,pathFill:X.color},X.useRangeColor?{lineFill:X.color}:{}),{},{j:P,i:n,columnGroupIndex:m,pathFrom:T.pathFrom,pathTo:T.pathTo,strokeWidth:I,elSeries:y,x:g,y:p,series:t,barHeight:Math.abs(T.barHeight?T.barHeight:w),barWidth:Math.abs(T.barWidth?T.barWidth:k),elDataLabelsWrap:S,elGoalsMarkers:L,elBarShadows:M,visibleSeries:this.visibleI,type:"bar"}))}i.globals.seriesXvalues[b]=x,i.globals.seriesYvalues[b]=f,r.add(y)}return r}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,n=t.columnGroupIndex,o=t.pathFrom,l=t.pathTo,h=t.strokeWidth,c=t.elSeries,d=t.x,u=t.y,g=t.y1,p=t.y2,f=t.series,x=t.barHeight,b=t.barWidth,m=t.barXPosition,v=t.barYPosition,y=t.elDataLabelsWrap,w=t.elGoalsMarkers,k=t.elBarShadows,A=t.visibleSeries,C=t.type,S=t.classes,L=this.w,M=new Mi(this.ctx),P=!1;if(!a){var I="function"==typeof L.globals.stroke.colors[e]?function(t){var e,i=L.config.stroke.colors;return Array.isArray(i)&&i.length>0&&((e=i[t])||(e=""),"function"==typeof e)?e({value:L.globals.series[t][s],dataPointIndex:s,w:L}):e}(e):L.globals.stroke.colors[e];a=this.barOptions.distributed?L.globals.stroke.colors[s]:I}var T=new Ma(this).handleBarDataLabels({x:d,y:u,y1:g,y2:p,i:r,j:s,series:f,realIndex:e,columnGroupIndex:n,barHeight:x,barWidth:b,barXPosition:m,barYPosition:v,visibleSeries:A});L.globals.isBarHorizontal||(T.dataLabelsPos.dataLabelsX+Math.max(b,L.globals.barPadForNumericAxis)<0||T.dataLabelsPos.dataLabelsX-Math.max(b,L.globals.barPadForNumericAxis)>L.globals.gridWidth)&&(P=!0),L.config.series[r].data[s]&&L.config.series[r].data[s].strokeColor&&(a=L.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var z=s/L.config.chart.animations.animateGradually.delay*(L.config.chart.animations.speed/L.globals.dataPoints)/2.4;if(!P){var X=M.renderPaths({i:r,j:s,realIndex:e,pathFrom:o,pathTo:l,stroke:a,strokeWidth:h,strokeLineCap:L.config.stroke.lineCap,fill:i,animationDelay:z,initialSpeed:L.config.chart.animations.speed,dataChangeSpeed:L.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(C,"-area ").concat(S),chartType:C});X.attr("clip-path","url(#gridRectBarMask".concat(L.globals.cuid,")"));var R=L.config.forecastDataPoints;R.count>0&&s>=L.globals.dataPoints-R.count&&(X.node.setAttribute("stroke-dasharray",R.dashArray),X.node.setAttribute("stroke-width",R.strokeWidth),X.node.setAttribute("fill-opacity",R.fillOpacity)),void 0!==g&&void 0!==p&&(X.attr("data-range-y1",g),X.attr("data-range-y2",p)),new Li(this.ctx).setSelectionFilter(X,e,s),c.add(X),X.attr({cy:T.dataLabelsPos.bcy,cx:T.dataLabelsPos.bcx,j:s,val:L.globals.series[r][s],barHeight:x,barWidth:b}),null!==T.dataLabels&&y.add(T.dataLabels),T.totalDataLabels&&y.add(T.totalDataLabels),c.add(y),w&&c.add(w),k&&c.add(k)}return c}},{key:"drawBarPaths",value:function(t){var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,n=t.x,o=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=i.i,u=i.j;if(c.globals.isXNumeric)e=(o=(c.globals.seriesX[d][u]-c.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var g=this.barHelpers.getZeroValueEncounters({i:d,j:u}),p=g.nonZeroColumns,f=g.zeroEncounters;p>0&&(a=this.seriesLen*a/p),e=o+a*this.visibleI,e-=a*f}else e=o+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[d][u],r)-r)/2),n=this.barHelpers.getXForValue(this.series[d][u],r);var x=this.barHelpers.getBarpaths({barYPosition:e,barHeight:a,x1:r,x2:n,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,i:d,j:u,w:c});return c.globals.isXNumeric||(o+=l),this.barHelpers.barBackground({j:u,i:d,y1:e-a*this.visibleI,y2:a*this.seriesLen,elSeries:h}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x1:r,x:n,y:o,goalX:this.barHelpers.getGoalValues("x",r,null,d,u),barYPosition:e,barHeight:a}}},{key:"drawColumnPaths",value:function(t){var e,i=t.indexes,a=t.x,s=t.y,r=t.xDivision,n=t.barWidth,o=t.zeroH,l=t.strokeWidth,h=t.elSeries,c=this.w,d=i.realIndex,u=i.translationsIndex,g=i.i,p=i.j,f=i.bc;if(c.globals.isXNumeric){var x=this.getBarXForNumericXAxis({x:a,j:p,realIndex:d,barWidth:n});a=x.x,e=x.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var b=this.barHelpers.getZeroValueEncounters({i:g,j:p}),m=b.nonZeroColumns,v=b.zeroEncounters;m>0&&(n=this.seriesLen*n/m),e=a+n*this.visibleI,e-=n*v}else e=a+n*this.visibleI;s=this.barHelpers.getYForValue(this.series[g][p],o,u);var y=this.barHelpers.getColumnPaths({barXPosition:e,barWidth:n,y1:o,y2:s,strokeWidth:l,isReversed:this.isReversed,series:this.series,realIndex:d,i:g,j:p,w:c});return c.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:f,j:p,i:g,x1:e-l/2-n*this.visibleI,x2:n*this.seriesLen+l/2,elSeries:h}),{pathTo:y.pathTo,pathFrom:y.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues("y",null,o,g,p,u),barXPosition:e,barWidth:n}}},{key:"getBarXForNumericXAxis",value:function(t){var e=t.x,i=t.barWidth,a=t.realIndex,s=t.j,r=this.w,n=a;return r.globals.seriesX[a].length||(n=r.globals.maxValsInArrayIndex),v.isNumber(r.globals.seriesX[n][s])&&(e=(r.globals.seriesX[n][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:e+i*this.visibleI,x:e}}},{key:"getPreviousPath",value:function(t,e){for(var i=this.w,a="M 0 0",s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==i.globals.previousPaths[s].paths[e]&&(a=i.globals.previousPaths[s].paths[e].d)}return a}}]),t}(),Ta=function(t){h(a,t);var e=n(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:"draw",value:function(t,e){var i=this,a=this.w;this.graphics=new Mi(this.ctx),this.bar=new Ia(this.ctx,this.xyRatios);var s=new Pi(this.ctx,a);t=s.getLogSeries(t),this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),"100%"===a.config.chart.stackType&&(t=a.globals.comboCharts?e.map((function(t){return a.globals.seriesPercent[t]})):a.globals.seriesPercent.slice()),this.series=t,this.barHelpers.initializeStackedPrevVars(this);for(var r=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),n=0,o=0,l=function(s,l){var h=void 0,c=void 0,d=void 0,g=void 0,p=a.globals.comboCharts?e[s]:s,f=i.barHelpers.getGroupIndex(p),x=f.groupIndex,b=f.columnGroupIndex;i.groupCtx=i[a.globals.seriesGroups[x]];var m=[],y=[],w=0;i.yRatio.length>1&&(i.yaxisIndex=a.globals.seriesYAxisReverseMap[p][0],w=p),i.isReversed=a.config.yaxis[i.yaxisIndex]&&a.config.yaxis[i.yaxisIndex].reversed;var k=i.graphics.group({class:"apexcharts-series",seriesName:v.escapeString(a.globals.seriesNames[p]),rel:s+1,"data:realIndex":p});i.ctx.series.addCollapsedClassToSeries(k,p);var A=i.graphics.group({class:"apexcharts-datalabels","data:realIndex":p}),C=i.graphics.group({class:"apexcharts-bar-goals-markers"}),S=0,L=0,M=i.initialPositions(n,o,h,c,d,g,w);o=M.y,S=M.barHeight,c=M.yDivision,g=M.zeroW,n=M.x,L=M.barWidth,h=M.xDivision,d=M.zeroH,a.globals.barHeight=S,a.globals.barWidth=L,i.barHelpers.initializeStackedXYVars(i),1===i.groupCtx.prevY.length&&i.groupCtx.prevY[0].every((function(t){return isNaN(t)}))&&(i.groupCtx.prevY[0]=i.groupCtx.prevY[0].map((function(){return d})),i.groupCtx.prevYF[0]=i.groupCtx.prevYF[0].map((function(){return 0})));for(var P=0;P0||"top"===i.barHelpers.arrBorderRadius[p][P]&&a.globals.series[p][P]<0)&&(E=Y),k=i.renderSeries(u(u({realIndex:p,pathFill:R.color},R.useRangeColor?{lineFill:R.color}:{}),{},{j:P,i:s,columnGroupIndex:b,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:I,elSeries:k,x:n,y:o,series:t,barHeight:S,barWidth:L,elDataLabelsWrap:A,elGoalsMarkers:C,type:"bar",visibleSeries:b,classes:E}))}a.globals.seriesXvalues[p]=m,a.globals.seriesYvalues[p]=y,i.groupCtx.prevY.push(i.groupCtx.yArrj),i.groupCtx.prevYF.push(i.groupCtx.yArrjF),i.groupCtx.prevYVal.push(i.groupCtx.yArrjVal),i.groupCtx.prevX.push(i.groupCtx.xArrj),i.groupCtx.prevXF.push(i.groupCtx.xArrjF),i.groupCtx.prevXVal.push(i.groupCtx.xArrjVal),r.add(k)},h=0,c=0;h1?l=(i=h.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:-1===String(d).indexOf("%")?l=parseInt(d,10):l*=parseInt(d,10)/100,s=this.isReversed?this.baseLineY[n]:h.globals.gridHeight-this.baseLineY[n],t=h.globals.padHorizontal+(i-l)/2}var u=h.globals.barGroups.length||1;return{x:t,y:e,yDivision:a,xDivision:i,barHeight:o/u,barWidth:l/u,zeroH:s,zeroW:r}}},{key:"drawStackedBarPaths",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,n=t.x,o=t.y,l=t.columnGroupIndex,h=t.seriesGroup,c=t.yDivision,d=t.elSeries,u=this.w,g=o+l*a,p=i.i,f=i.j,x=i.realIndex,b=i.translationsIndex,m=0,v=0;v0){var w=r;this.groupCtx.prevXVal[y-1][f]<0?w=this.series[p][f]>=0?this.groupCtx.prevX[y-1][f]+m-2*(this.isReversed?m:0):this.groupCtx.prevX[y-1][f]:this.groupCtx.prevXVal[y-1][f]>=0&&(w=this.series[p][f]>=0?this.groupCtx.prevX[y-1][f]:this.groupCtx.prevX[y-1][f]-m+2*(this.isReversed?m:0)),e=w}else e=r;n=null===this.series[p][f]?e:e+this.series[p][f]/this.invertedYRatio-2*(this.isReversed?this.series[p][f]/this.invertedYRatio:0);var k=this.barHelpers.getBarpaths({barYPosition:g,barHeight:a,x1:e,x2:n,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,seriesGroup:h,i:p,j:f,w:u});return this.barHelpers.barBackground({j:f,i:p,y1:g,y2:a,elSeries:d}),o+=c,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalX:this.barHelpers.getGoalValues("x",r,null,p,f,b),barXPosition:e,barYPosition:g,x:n,y:o}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,n=t.zeroH,o=t.columnGroupIndex,l=t.seriesGroup,h=t.elSeries,c=this.w,d=e.i,u=e.j,g=e.bc,p=e.realIndex,f=e.translationsIndex;if(c.globals.isXNumeric){var x=c.globals.seriesX[p][u];x||(x=0),i=(x-c.globals.minX)/this.xRatio-r/2*c.globals.barGroups.length}for(var b,m=i+o*r,v=0,y=0;y0&&!c.globals.isXNumeric||w>0&&c.globals.isXNumeric&&c.globals.seriesX[p-1][u]===c.globals.seriesX[p][u]){var k,A,C,S=Math.min(this.yRatio.length+1,p+1);if(void 0!==this.groupCtx.prevY[w-1]&&this.groupCtx.prevY[w-1].length)for(var L=1;L=0?C-v+2*(this.isReversed?v:0):C;break}if((null===(T=this.groupCtx.prevYVal[w-P])||void 0===T?void 0:T[u])>=0){A=this.series[d][u]>=0?C:C+v-2*(this.isReversed?v:0);break}}void 0===A&&(A=c.globals.gridHeight),b=null!==(k=this.groupCtx.prevYF[0])&&void 0!==k&&k.every((function(t){return 0===t}))&&this.groupCtx.prevYF.slice(1,w).every((function(t){return t.every((function(t){return isNaN(t)}))}))?n:A}else b=n;a=this.series[d][u]?b-this.series[d][u]/this.yRatio[f]+2*(this.isReversed?this.series[d][u]/this.yRatio[f]:0):b;var z=this.barHelpers.getColumnPaths({barXPosition:m,barWidth:r,y1:b,y2:a,yRatio:this.yRatio[f],strokeWidth:this.strokeWidth,isReversed:this.isReversed,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:d,j:u,w:c});return this.barHelpers.barBackground({bc:g,j:u,i:d,x1:m,x2:r,elSeries:h}),{pathTo:z.pathTo,pathFrom:z.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,n,d,u),barXPosition:m,x:c.globals.isXNumeric?i:i+s,y:a}}}]),a}(Ia),za=function(t){h(a,t);var e=n(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:"draw",value:function(t,e,i){var a=this,s=this.w,r=new Mi(this.ctx),n=s.globals.comboCharts?e:s.config.chart.type,o=new ji(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=s.config.plotOptions.bar.horizontal,this.isOHLC=this.candlestickOptions&&"ohlc"===this.candlestickOptions.type;var l=new Pi(this.ctx,s);t=l.getLogSeries(t),this.series=t,this.yRatio=l.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var h=r.group({class:"apexcharts-".concat(n,"-series apexcharts-plot-series")}),c=function(e){a.isBoxPlot="boxPlot"===s.config.chart.type||"boxPlot"===s.config.series[e].type;var n,l,c,d,g=void 0,p=void 0,f=[],x=[],b=s.globals.comboCharts?i[e]:e,m=a.barHelpers.getGroupIndex(b).columnGroupIndex,y=r.group({class:"apexcharts-series",seriesName:v.escapeString(s.globals.seriesNames[b]),rel:e+1,"data:realIndex":b});a.ctx.series.addCollapsedClassToSeries(y,b),t[e].length>0&&(a.visibleI=a.visibleI+1);var w,k,A=0;a.yRatio.length>1&&(a.yaxisIndex=s.globals.seriesYAxisReverseMap[b][0],A=b);var C=a.barHelpers.initialPositions(b);p=C.y,w=C.barHeight,l=C.yDivision,d=C.zeroW,g=C.x,k=C.barWidth,n=C.xDivision,c=C.zeroH,x.push(g+k/2);for(var S=r.group({class:"apexcharts-datalabels","data:realIndex":b}),L=r.group({class:"apexcharts-bar-goals-markers"}),M=function(i){var r=a.barHelpers.getStrokeWidth(e,i,b),h=null,v={indexes:{i:e,j:i,realIndex:b,translationsIndex:A},x:g,y:p,strokeWidth:r,elSeries:y};h=a.isHorizontal?a.drawHorizontalBoxPaths(u(u({},v),{},{yDivision:l,barHeight:w,zeroW:d})):a.drawVerticalBoxPaths(u(u({},v),{},{xDivision:n,barWidth:k,zeroH:c})),p=h.y,g=h.x;var C=a.barHelpers.drawGoalLine({barXPosition:h.barXPosition,barYPosition:h.barYPosition,goalX:h.goalX,goalY:h.goalY,barHeight:w,barWidth:k});C&&L.add(C),i>0&&x.push(g+k/2),f.push(p),h.pathTo.forEach((function(n,l){var c=!a.isBoxPlot&&a.candlestickOptions.wick.useFillColor?h.color[l]:s.globals.stroke.colors[e],d=o.fillPath({seriesNumber:b,dataPointIndex:i,color:h.color[l],value:t[e][i]});a.renderSeries({realIndex:b,pathFill:d,lineFill:c,j:i,i:e,pathFrom:h.pathFrom,pathTo:n,strokeWidth:r,elSeries:y,x:g,y:p,series:t,columnGroupIndex:m,barHeight:w,barWidth:k,elDataLabelsWrap:S,elGoalsMarkers:L,visibleSeries:a.visibleI,type:s.config.chart.type})}))},P=0;P0&&(M=this.getPreviousPath(g,c,!0)),this.isOHLC){var P=S+s/2,I=r-m.o/b,T=r-m.c/b;L=[l.move(P,v)+l.line(P,y)+l.move(P,I)+l.line(S,I)+l.move(P,T)+l.line(S+s,T)]}else L=this.isBoxPlot?[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,C)+l.line(S,C)+l.line(S,k+n/2),l.move(S,C)+l.line(S+s,C)+l.line(S+s,A)+l.line(S+s/2,A)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,A)+l.line(S,A)+l.line(S,C)+"z"]:[l.move(S,A)+l.line(S+s/2,A)+l.line(S+s/2,v)+l.line(S+s/2,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A-n/2)];return M+=l.move(S,k),o.globals.isXNumeric||(i+=a),{pathTo:L,pathFrom:M,x:i,y:A,goalY:this.barHelpers.getGoalValues("y",null,r,h,c,e.translationsIndex),barXPosition:S,color:w}}},{key:"drawHorizontalBoxPaths",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,n=t.strokeWidth,o=this.w,l=new Mi(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var u=this.invertedYRatio,g=e.realIndex,p=this.getOHLCValue(g,c),f=r,x=r,b=Math.min(p.o,p.c),m=Math.max(p.o,p.c),v=p.m;o.globals.isXNumeric&&(i=(o.globals.seriesX[g][c]-o.globals.minX)/this.invertedXRatio-s/2);var y=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,m=r):(b=r+b/u,m=r+m/u,f=r+p.h/u,x=r+p.l/u,v=r+p.m/u);var w=l.move(r,y),k=l.move(b,y+s/2);return o.globals.previousPaths.length>0&&(k=this.getPreviousPath(g,c,!0)),w=[l.move(b,y)+l.line(b,y+s/2)+l.line(f,y+s/2)+l.line(f,y+s/2-s/4)+l.line(f,y+s/2+s/4)+l.line(f,y+s/2)+l.line(b,y+s/2)+l.line(b,y+s)+l.line(v,y+s)+l.line(v,y)+l.line(b+n/2,y),l.move(v,y)+l.line(v,y+s)+l.line(m,y+s)+l.line(m,y+s/2)+l.line(x,y+s/2)+l.line(x,y+s-s/4)+l.line(x,y+s/4)+l.line(x,y+s/2)+l.line(m,y+s/2)+l.line(m,y)+l.line(v,y)+"z"],k+=l.move(b,y),o.globals.isXNumeric||(i+=a),{pathTo:w,pathFrom:k,x:m,y:i,goalX:this.barHelpers.getGoalValues("x",r,null,h,c),barYPosition:y,color:d}}},{key:"getOHLCValue",value:function(t,e){var i=this.w,a=new Pi(this.ctx,i),s=a.getLogValAtSeriesIndex(i.globals.seriesCandleH[t][e],t),r=a.getLogValAtSeriesIndex(i.globals.seriesCandleO[t][e],t),n=a.getLogValAtSeriesIndex(i.globals.seriesCandleM[t][e],t),o=a.getLogValAtSeriesIndex(i.globals.seriesCandleC[t][e],t),l=a.getLogValAtSeriesIndex(i.globals.seriesCandleL[t][e],t);return{o:this.isBoxPlot?s:r,h:this.isBoxPlot?r:s,m:n,l:this.isBoxPlot?o:l,c:this.isBoxPlot?l:o}}}]),a}(Ia),Xa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"checkColorRange",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:"getShadeColor",value:function(t,e,i,a){var s=this.w,r=1,n=s.config.plotOptions[t].shadeIntensity,o=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?o.percent<0?o.percent/100*(1.25*n):(1-o.percent/100)*(1.25*n):o.percent<=0?1-(1+o.percent/100)*n:(1-o.percent/100)*n:(r=1-o.percent/100,"treemap"===t&&(r=(1-o.percent/100)*(1.25*n)));var l=o.color,h=new v;if(s.config.plotOptions[t].enableShades)if("dark"===this.w.config.theme.mode){var c=h.shadeColor(-1*r,o.color);l=v.hexToRgba(v.isColorHex(c)?c:v.rgb2hex(c),s.config.fill.opacity)}else{var d=h.shadeColor(r,o.color);l=v.hexToRgba(v.isColorHex(d)?d:v.rgb2hex(d),s.config.fill.opacity)}return{color:l,colorProps:o}}},{key:"determineColor",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],n=r.colorScale.inverse?i:e;r.distributed&&"treemap"===a.config.chart.type&&(n=i);var o=a.globals.colors[n],l=null,h=Math.min.apply(Math,f(a.globals.series[e])),c=Math.max.apply(Math,f(a.globals.series[e]));r.distributed||"heatmap"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),u=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){o=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);u=100*s/(0===i?i-1e-6:i)}}));return{color:o,foreColor:l,percent:u}}},{key:"calculateDataLabels",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,n=t.colorProps,o=t.fontSize,l=this.w.config.dataLabels,h=new Mi(this.ctx),c=new qi(this.ctx),d=null;if(l.enabled){d=h.group({class:"apexcharts-data-labels"});var u=l.offsetX,g=l.offsetY,p=i+u,f=a+parseFloat(l.style.fontSize)/3+g;c.plotDataLabelsText({x:p,y:f,text:e,i:s,j:r,color:n.foreColor,parent:d,fontSize:o,dataLabelsConfig:l})}return d}},{key:"addListeners",value:function(t){var e=new Mi(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this,t))}}]),t}(),Ra=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w,this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new Xa(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return s(t,[{key:"draw",value:function(t){var e=this.w,i=new Mi(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,n=0,o=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(o=!0,l.reverse());for(var h=o?0:l.length-1;o?h=0;o?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:v.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new Li(this.ctx).dropShadow(c,d,h)}for(var u=0,g=e.config.plotOptions.heatmap.shadeIntensity,p=0,f=0;f=l[h].length)break;var x=this.helpers.getShadeColor(e.config.chart.type,h,p,this.negRange),b=x.color,m=x.colorProps;if("image"===e.config.fill.type)b=new ji(this.ctx).fillPath({seriesNumber:h,dataPointIndex:p,opacity:e.globals.hasNegs?m.percent<0?1-(1+m.percent/100):g+m.percent/100:m.percent/100,patternID:v.randomId(),width:e.config.fill.image.width?e.config.fill.image.width:s,height:e.config.fill.image.height?e.config.fill.image.height:r});var y=this.rectRadius,w=i.drawRect(u,n,s,r,y);if(w.attr({cx:u,cy:n}),w.node.classList.add("apexcharts-heatmap-rect"),c.add(w),w.attr({fill:b,i:h,index:h,j:p,val:t[h][p],"stroke-width":this.strokeWidth,stroke:e.config.plotOptions.heatmap.useFillColorAsStroke?b:e.globals.stroke.colors[0],color:b}),this.helpers.addListeners(w),e.config.chart.animations.enabled&&!e.globals.dataChanged){var k=1;e.globals.resized||(k=e.config.chart.animations.speed),this.animateHeatMap(w,u,n,s,r,k)}if(e.globals.dataChanged){var A=1;if(this.dynamicAnim.enabled&&e.globals.shouldAnimate){A=this.dynamicAnim.speed;var C=e.globals.previousPaths[h]&&e.globals.previousPaths[h][p]&&e.globals.previousPaths[h][p].color;C||(C="rgba(255, 255, 255, 0)"),this.animateHeatColor(w,v.isColorHex(C)?C:v.rgb2hex(C),v.isColorHex(b)?b:v.rgb2hex(b),A)}}var S=(0,e.config.dataLabels.formatter)(e.globals.series[h][p],{value:e.globals.series[h][p],seriesIndex:h,dataPointIndex:p,w:e}),L=this.helpers.calculateDataLabels({text:S,x:u+s/2,y:n+r/2,i:h,j:p,colorProps:m,series:l});null!==L&&c.add(L),u+=s,p++}n+=r,a.add(c)}var M=e.globals.yAxisScale[0].result.slice();return e.config.yaxis[0].reversed?M.unshift(""):M.push(""),e.globals.yAxisScale[0].result=M,a}},{key:"animateHeatMap",value:function(t,e,i,a,s,r){var n=new y(this.ctx);n.animateRect(t,{x:e+a/2,y:i+s/2,width:0,height:0},{x:e,y:i,width:a,height:s},r,(function(){n.animationCompleted(t)}))}},{key:"animateHeatColor",value:function(t,e,i,a){t.attr({fill:e}).animate(a).attr({fill:i})}}]),t}(),Ea=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"drawYAxisTexts",value:function(t,e,i,a){var s=this.w,r=s.config.yaxis[0],n=s.globals.yLabelFormatters[0];return new Mi(this.ctx).drawText({x:t+r.labels.offsetX,y:e+r.labels.offsetY,text:n(a,i),textAnchor:"middle",fontSize:r.labels.style.fontSize,fontFamily:r.labels.style.fontFamily,foreColor:Array.isArray(r.labels.style.colors)?r.labels.style.colors[i]:r.labels.style.colors})}}]),t}(),Ya=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels,this.lineColorArr=void 0!==a.globals.stroke.colors?a.globals.stroke.colors:a.globals.colors,this.defaultSize=Math.min(a.globals.gridWidth,a.globals.gridHeight),this.centerY=this.defaultSize/2,this.centerX=a.globals.gridWidth/2,"radialBar"===a.config.chart.type?this.fullAngle=360:this.fullAngle=Math.abs(a.config.plotOptions.pie.endAngle-a.config.plotOptions.pie.startAngle),this.initialAngle=a.config.plotOptions.pie.startAngle%this.fullAngle,a.globals.radialSize=this.defaultSize/2.05-a.config.stroke.width-(a.config.chart.sparkline.enabled?0:a.config.chart.dropShadow.blur),this.donutSize=a.globals.radialSize*parseInt(a.config.plotOptions.pie.donut.size,10)/100;var s=a.config.plotOptions.pie.customScale,r=a.globals.gridWidth/2,n=a.globals.gridHeight/2;this.translateX=r-r*s,this.translateY=n-n*s,this.dataLabelsGroup=new Mi(this.ctx).group({class:"apexcharts-datalabels-group",transform:"translate(".concat(this.translateX,", ").concat(this.translateY,") scale(").concat(s,")")}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSectorAngleArr=[]}return s(t,[{key:"draw",value:function(t){var e=this,i=this.w,a=new Mi(this.ctx),s=a.group({class:"apexcharts-pie"});if(i.globals.noData)return s;for(var r=0,n=0;n-1&&this.pieClicked(d),i.config.dataLabels.enabled){var w=m.x,k=m.y,A=100*g/this.fullAngle+"%";if(0!==g&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+n):a+n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(h=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(h)>this.fullAngle&&(h-=this.fullAngle);var c=Math.PI*(h-90)/180,d=i.centerX+r*Math.cos(l),u=i.centerY+r*Math.sin(l),g=i.centerX+r*Math.cos(c),p=i.centerY+r*Math.sin(c),f=v.polarToCartesian(i.centerX,i.centerY,i.donutSize,h),x=v.polarToCartesian(i.centerX,i.centerY,i.donutSize,o),b=s>180?1:0,m=["M",d,u,"A",r,r,0,b,1,g,p];return e="donut"===i.chartType?[].concat(m,["L",f.x,f.y,"A",i.donutSize,i.donutSize,0,b,0,x.x,x.y,"L",d,u,"z"]).join(" "):"pie"===i.chartType||"polarArea"===i.chartType?[].concat(m,["L",i.centerX,i.centerY,"L",d,u]).join(" "):[].concat(m).join(" "),n.roundPathCorners(e,2*this.strokeWidth)}},{key:"drawPolarElements",value:function(t){var e=this.w,i=new ea(this.ctx),a=new Mi(this.ctx),s=new Ea(this.ctx),r=a.group(),n=a.group(),o=i.niceScale(0,Math.ceil(this.maxY),0),l=o.result.reverse(),h=o.result.length;this.maxY=o.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),u=0;u1&&t.total.show&&(s=t.total.color);var n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=this.donutDataLabels.total.label?t.name.formatter(e,l,r):"",null!==n&&(n.textContent=e),null!==o&&(o.textContent=i),null!==n&&(n.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(t){var e=this,i=this.w,a=new Mi(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],n=360/i.globals.series.length,o=0;o0&&(f=e.getPreviousPath(n));for(var x=0;x=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(u=360-Math.abs(this.startAngle)-.1);var g=i.drawPath({d:"",stroke:c,strokeWidth:n*parseInt(h.strokeWidth,10)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var p=h.dropShadow;s.dropShadow(g,p)}l.add(g),g.attr("id","apexcharts-radialbarTrack-"+o),this.animatePaths(g,{centerX:t.centerX,centerY:t.centerY,endAngle:u,startAngle:d,size:t.size,i:o,totalItems:2,animBeginArr:0,dur:0,isTrack:!0})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new Mi(this.ctx),a=new ji(this.ctx),s=new Li(this.ctx),r=i.group(),n=this.getStrokeWidth(t);t.size=t.size-n/2;var o=e.config.plotOptions.radialBar.hollow.background,l=t.size-n*t.series.length-this.margin*t.series.length-n*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(o=this.drawHollowImage(t,r,l,o));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:o||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var u=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(u=0);var g=null;if(this.radialDataLabels.show){var p=e.globals.dom.Paper.findOne(".apexcharts-datalabels-group");g=this.renderInnerDataLabels(p,this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:u})}"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),g&&r.add(g));var f=!1;e.config.plotOptions.radialBar.inverseOrder&&(f=!0);for(var x=f?t.series.length-1:0;f?x>=0:x100?100:t.series[x])/100,A=Math.round(this.totalAngle*k)+this.startAngle,C=void 0;e.globals.dataChanged&&(w=this.startAngle,C=Math.round(this.totalAngle*v.negToZero(e.globals.previousPaths[x])/100)+w),Math.abs(A)+Math.abs(y)>360&&(A-=.01),Math.abs(C)+Math.abs(w)>360&&(C-=.01);var S=A-y,L=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[x]:e.config.stroke.dashArray,M=i.drawPath({d:"",stroke:m,strokeWidth:n,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+x,strokeDashArray:L});if(Mi.setAttrs(M.node,{"data:angle":S,"data:value":t.series[x]}),e.config.chart.dropShadow.enabled){var P=e.config.chart.dropShadow;s.dropShadow(M,P,x)}if(s.setSelectionFilter(M,0,x),this.addListeners(M,this.radialDataLabels),b.add(M),M.attr({index:0,j:x}),this.barLabels.enabled){var I=v.polarToCartesian(t.centerX,t.centerY,t.size,y),T=this.barLabels.formatter(e.globals.seriesNames[x],{seriesIndex:x,w:e}),z=["apexcharts-radialbar-label"];this.barLabels.onClick||z.push("apexcharts-no-click");var X=this.barLabels.useSeriesColors?e.globals.colors[x]:e.config.chart.foreColor;X||(X=e.config.chart.foreColor);var R=I.x+this.barLabels.offsetX,E=I.y+this.barLabels.offsetY,Y=i.drawText({x:R,y:E,text:T,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:X,cssClass:z.join(" ")});Y.on("click",this.onBarLabelClick),Y.attr({rel:x+1}),0!==y&&Y.attr({"transform-origin":"".concat(R," ").concat(E),transform:"rotate(".concat(y," 0 0)")}),b.add(Y)}var H=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(H=e.config.chart.animations.speed),e.globals.dataChanged&&(H=e.config.chart.animations.dynamicAnimation.speed),this.animDur=H/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(M,{centerX:t.centerX,centerY:t.centerY,endAngle:A,startAngle:y,prevEndAngle:C,prevStartAngle:w,size:t.size,i:x,totalItems:2,animBeginArr:this.animBeginArr,dur:H,shouldSetPrevPaths:!0})}return{g:r,elHollow:c,dataLabels:g}}},{key:"drawHollow",value:function(t){var e=new Mi(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new ji(this.ctx),n=v.randomId(),o=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:o,patternID:"pattern".concat(s.globals.cuid).concat(n)}),a="url(#pattern".concat(s.globals.cuid).concat(n,")");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(o,(function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(o,(function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}},{key:"onBarLabelClick",value:function(t){var e=parseInt(t.target.getAttribute("rel"),10)-1,i=this.barLabels.onClick,a=this.w;i&&i(a.globals.seriesNames[e],{w:a,seriesIndex:e})}}]),r}(Ya),Fa=function(t){h(a,t);var e=n(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:"draw",value:function(t,e){var i=this.w,a=new Mi(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var s=a.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),r=0;r0&&(this.visibleI=this.visibleI+1);var x=0,b=0,m=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[g][0],m=g);var y=this.barHelpers.initialPositions(g);d=y.y,h=y.zeroW,c=y.x,b=y.barWidth,x=y.barHeight,n=y.xDivision,o=y.yDivision,l=y.zeroH;for(var w=a.group({class:"apexcharts-datalabels","data:realIndex":g}),k=a.group({class:"apexcharts-rangebar-goals-markers"}),A=0;A0}));return this.isHorizontal?(a=u.config.plotOptions.bar.rangeBarGroupRows?r+h*b:r+o*this.visibleI+h*b,m>-1&&!u.config.plotOptions.bar.rangeBarOverlap&&(g=u.globals.seriesRange[e][m].overlaps).indexOf(p)>-1&&(a=(o=d.barHeight/g.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+o*(this.visibleI+g.indexOf(p))+h*b)):(b>-1&&!u.globals.timescaleLabels.length&&(s=u.config.plotOptions.bar.rangeBarGroupRows?n+c*b:n+l*this.visibleI+c*b),m>-1&&!u.config.plotOptions.bar.rangeBarOverlap&&(g=u.globals.seriesRange[e][m].overlaps).indexOf(p)>-1&&(s=(l=d.barWidth/g.length)*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+g.indexOf(p))+c*b)),{barYPosition:a,barXPosition:s,barHeight:o,barWidth:l}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.xDivision,s=t.barWidth,r=t.barXPosition,n=t.zeroH,o=this.w,l=e.i,h=e.j,c=e.realIndex,d=e.translationsIndex,u=this.yRatio[d],g=this.getRangeValue(c,h),p=Math.min(g.start,g.end),f=Math.max(g.start,g.end);void 0===this.series[l][h]||null===this.series[l][h]?p=n:(p=n-p/u,f=n-f/u);var x=Math.abs(f-p),b=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:s,y1:p,y2:f,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:c,i:c,j:h,w:o});if(o.globals.isXNumeric){var m=this.getBarXForNumericXAxis({x:i,j:h,realIndex:c,barWidth:s});i=m.x,r=m.barXPosition}else i+=a;return{pathTo:b.pathTo,pathFrom:b.pathFrom,barHeight:x,x:i,y:g.start<0&&g.end<0?p:f,goalY:this.barHelpers.getGoalValues("y",null,n,l,h,d),barXPosition:r}}},{key:"preventBarOverflow",value:function(t){var e=this.w;return t<0&&(t=0),t>e.globals.gridWidth&&(t=e.globals.gridWidth),t}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,n=t.barHeight,o=t.barYPosition,l=t.zeroW,h=this.w,c=e.realIndex,d=e.j,u=this.preventBarOverflow(l+a/this.invertedYRatio),g=this.preventBarOverflow(l+s/this.invertedYRatio),p=this.getRangeValue(c,d),f=Math.abs(g-u),x=this.barHelpers.getBarpaths({barYPosition:o,barHeight:n,x1:u,x2:g,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:c,realIndex:c,j:d,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:x.pathTo,pathFrom:x.pathFrom,barWidth:f,x:p.start<0&&p.end<0?u:g,goalX:this.barHelpers.getGoalValues("x",l,null,c,d),y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),a}(Ia),Da=function(){function t(e){i(this,t),this.w=e.w,this.lineCtx=e}return s(t,[{key:"sameValueSeriesFix",value:function(t,e){var i=this.w;if(("gradient"===i.config.fill.type||"gradient"===i.config.fill.type[t])&&new Pi(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,n=t.j,o=t.prevY,l=this.w,h=[],c=[],d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;return l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),0===n&&(h.push(d),c.push(v.isNumber(e[r][0])?o+l.config.markers.offsetY:null)),h.push(a+l.config.markers.offsetX),c.push(v.isNumber(e[r][n+1])?s+l.config.markers.offsetY:null),{x:h,y:c}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(n.realIndex,10)===parseInt(a,10)&&("line"===n.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===n.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e,i,a,s=t.i,r=t.realIndex,n=t.series,o=t.prevY,l=t.lineYPosition,h=t.translationsIndex,c=this.w,d=c.config.chart.stacked&&!c.globals.comboCharts||c.config.chart.stacked&&c.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||"bar"===(null===(e=this.w.config.series[r])||void 0===e?void 0:e.type)||"column"===(null===(i=this.w.config.series[r])||void 0===i?void 0:i.type));if(void 0!==(null===(a=n[s])||void 0===a?void 0:a[0]))o=(l=d&&s>0?this.lineCtx.prevSeriesY[s-1][0]:this.lineCtx.zeroY)-n[s][0]/this.lineCtx.yRatio[h]+2*(this.lineCtx.isReversed?n[s][0]/this.lineCtx.yRatio[h]:0);else if(d&&s>0&&void 0===n[s][0])for(var u=s-1;u>=0;u--)if(null!==n[u][0]&&void 0!==n[u][0]){o=l=this.lineCtx.prevSeriesY[u][0];break}return{prevY:o,lineYPosition:l}}}]),t}(),_a=function(t){for(var e,i,a,s,r=function(t){for(var e=[],i=t[0],a=t[1],s=e[0]=Ba(i,a),r=1,n=t.length-1;r9&&(s=3*a/Math.sqrt(s),r[l]=s*e,r[l+1]=s*i);for(var h=0;h<=n;h++)s=(t[Math.min(n,h+1)][0]-t[Math.max(0,h-1)][0])/(6*(1+r[h]*r[h])),o.push([s||0,r[h]*s||0]);return o},Na=function(t){var e=_a(t),i=t[1],a=t[0],s=[],r=e[1],n=e[0];s.push(a,[a[0]+n[0],a[1]+n[1],i[0]-r[0],i[1]-r[1],i[0],i[1]]);for(var o=2,l=e.length;o1&&a[1].length<6){var s=a[0].length;a[1]=[2*a[0][s-2]-a[0][s-4],2*a[0][s-1]-a[0][s-3]].concat(a[1])}a[0]=a[0].slice(-2)}return a};function Ba(t,e){return(e[1]-t[1])/(e[0]-t[0])}var Ga=function(){function t(e,a,s){i(this,t),this.ctx=e,this.w=e.w,this.xyRatios=a,this.pointsChart=!("bubble"!==this.w.config.chart.type&&"scatter"!==this.w.config.chart.type)||s,this.scatter=new Ui(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new Da(this),this.markers=new Vi(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return s(t,[{key:"draw",value:function(t,e,i,a){var s,r=this.w,n=new Mi(this.ctx),o=r.globals.comboCharts?e:r.config.chart.type,l=n.group({class:"apexcharts-".concat(o,"-series apexcharts-plot-series")}),h=new Pi(this.ctx,r);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=h.getLogSeries(t),this.yRatio=h.getLogYRatios(this.yRatio),this.prevSeriesY=[];for(var c=[],d=0;d1?g:0;this._initSerieVariables(t,d,g);var f=[],x=[],b=[],m=r.globals.padHorizontal+this.categoryAxisCorrection;this.ctx.series.addCollapsedClassToSeries(this.elSeries,g),r.globals.isXNumeric&&r.globals.seriesX.length>0&&(m=(r.globals.seriesX[g][0]-r.globals.minX)/this.xRatio),b.push(m);var v,y=m,w=void 0,k=y,A=this.zeroY,C=this.zeroY;A=this.lineHelpers.determineFirstPrevY({i:d,realIndex:g,series:t,prevY:A,lineYPosition:0,translationsIndex:p}).prevY,"monotoneCubic"===r.config.stroke.curve&&null===t[d][0]?f.push(null):f.push(A),v=A;"rangeArea"===o&&(w=C=this.lineHelpers.determineFirstPrevY({i:d,realIndex:g,series:a,prevY:C,lineYPosition:0,translationsIndex:p}).prevY,x.push(null!==f[0]?C:null));var S=this._calculatePathsFrom({type:o,series:t,i:d,realIndex:g,translationsIndex:p,prevX:k,prevY:A,prevY2:C}),L=[f[0]],M=[x[0]],P={type:o,series:t,realIndex:g,translationsIndex:p,i:d,x:m,y:1,pX:y,pY:v,pathsFrom:S,linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:b,yArrj:f,y2Arrj:x,seriesRangeEnd:a},I=this._iterateOverDataPoints(u(u({},P),{},{iterations:"rangeArea"===o?t[d].length-1:void 0,isRangeStart:!0}));if("rangeArea"===o){for(var T=this._calculatePathsFrom({series:a,i:d,realIndex:g,prevX:k,prevY:C}),z=this._iterateOverDataPoints(u(u({},P),{},{series:a,xArrj:[m],yArrj:L,y2Arrj:M,pY:w,areaPaths:I.areaPaths,pathsFrom:T,iterations:a[d].length-1,isRangeStart:!1})),X=I.linePaths.length/2,R=0;R=0;E--)l.add(c[E]);else for(var Y=0;Y1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[i],r=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[r]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[r]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||"end"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",zIndex:void 0!==a.config.series[i].zIndex?a.config.series[i].zIndex:i,seriesName:v.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),a.globals.hasNullValues){var n=this.markers.plotChartMarkers({pointsPos:{x:[0],y:[a.globals.gridHeight+a.globals.markers.largestSize]},seriesIndex:e,j:0,pSize:.1,alwaysDrawMarker:!0,isVirtualPoint:!0});null!==n&&this.elPointsMain.add(n)}this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var o=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":o,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.type,n=t.series,o=t.i,l=t.realIndex,h=t.translationsIndex,c=t.prevX,d=t.prevY,u=t.prevY2,g=this.w,p=new Mi(this.ctx);if(null===n[o][0]){for(var f=0;f0){var x=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=x.pathFromLine,s=x.pathFromArea}return{prevX:c,prevY:d,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var e=t.type,i=t.realIndex,a=t.i,s=t.paths,r=this.w,n=new Mi(this.ctx),o=new ji(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var l=r.config.forecastDataPoints;if(l.count>0&&"rangeArea"!==e){var h=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-l.count-1],c=n.drawRect(h,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(c.node);var d=n.drawRect(0,0,h,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(d.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var g={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(e)};if("area"===e)for(var p=o.fillPath({seriesNumber:i}),f=0;f0&&"rangeArea"!==e){var A=n.renderPaths(w);A.node.setAttribute("stroke-dasharray",l.dashArray),l.strokeWidth&&A.node.setAttribute("stroke-width",l.strokeWidth),this.elSeries.add(A),A.attr("clip-path","url(#forecastMask".concat(r.globals.cuid,")")),k.attr("clip-path","url(#nonForecastMask".concat(r.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(t){var e,i,a=this,s=t.type,r=t.series,n=t.iterations,o=t.realIndex,l=t.translationsIndex,h=t.i,c=t.x,d=t.y,u=t.pX,g=t.pY,p=t.pathsFrom,f=t.linePaths,x=t.areaPaths,b=t.seriesIndex,m=t.lineYPosition,y=t.xArrj,w=t.yArrj,k=t.y2Arrj,A=t.isRangeStart,C=t.seriesRangeEnd,S=this.w,L=new Mi(this.ctx),M=this.yRatio,P=p.prevY,I=p.linePath,T=p.areaPath,z=p.pathFromLine,X=p.pathFromArea,R=v.isNumber(S.globals.minYArr[o])?S.globals.minYArr[o]:S.globals.minY;n||(n=S.globals.dataPoints>1?S.globals.dataPoints-1:S.globals.dataPoints);var E=function(t,e){return e-t/M[l]+2*(a.isReversed?t/M[l]:0)},Y=d,H=S.config.chart.stacked&&!S.globals.comboCharts||S.config.chart.stacked&&S.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||"bar"===(null===(e=this.w.config.series[o])||void 0===e?void 0:e.type)||"column"===(null===(i=this.w.config.series[o])||void 0===i?void 0:i.type)),O=S.config.stroke.curve;Array.isArray(O)&&(O=Array.isArray(b)?O[b[h]]:O[h]);for(var F,D=0,_=0;_0&&S.globals.collapsedSeries.length0;e--){if(!(S.globals.collapsedSeriesIndices.indexOf((null==b?void 0:b[e])||e)>-1))return e;e--}return 0}(h-1)][_+1]}else m=this.zeroY;else m=this.zeroY;N?d=E(R,m):(d=E(r[h][_+1],m),"rangeArea"===s&&(Y=E(C[h][_+1],m))),y.push(null===r[h][_+1]?null:c),!N||"smooth"!==S.config.stroke.curve&&"monotoneCubic"!==S.config.stroke.curve?(w.push(d),k.push(Y)):(w.push(null),k.push(null));var B=this.lineHelpers.calculatePoints({series:r,x:c,y:d,realIndex:o,i:h,j:_,prevY:P}),G=this._createPaths({type:s,series:r,i:h,realIndex:o,j:_,x:c,y:d,y2:Y,xArrj:y,yArrj:w,y2Arrj:k,pX:u,pY:g,pathState:D,segmentStartX:F,linePath:I,areaPath:T,linePaths:f,areaPaths:x,curve:O,isRangeStart:A});x=G.areaPaths,f=G.linePaths,u=G.pX,g=G.pY,D=G.pathState,F=G.segmentStartX,T=G.areaPath,I=G.linePath,!this.appendPathFrom||S.globals.hasNullValues||"monotoneCubic"===O&&"rangeArea"===s||(z+=L.line(c,this.areaBottomY),X+=L.line(c,this.areaBottomY)),this.handleNullDataPoints(r,B,h,_,o),this._handleMarkersAndLabels({type:s,pointsPos:B,i:h,j:_,realIndex:o,isRangeStart:A})}return{yArrj:w,xArrj:y,pathFromArea:X,areaPaths:x,pathFromLine:z,linePaths:f,linePath:I,areaPath:T}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,n=t.realIndex,o=this.w,l=new qi(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:n,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{o.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var h=this.markers.plotChartMarkers({pointsPos:i,seriesIndex:n,j:r+1});null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:n,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:"_createPaths",value:function(t){var e=t.type,i=t.series,a=t.i;t.realIndex;var s,r=t.j,n=t.x,o=t.y,l=t.xArrj,h=t.yArrj,c=t.y2,d=t.y2Arrj,u=t.pX,g=t.pY,p=t.pathState,f=t.segmentStartX,x=t.linePath,b=t.areaPath,m=t.linePaths,v=t.areaPaths,y=t.curve,w=t.isRangeStart,k=new Mi(this.ctx),A=this.areaBottomY,C="rangeArea"===e,S="rangeArea"===e&&w;switch(y){case"monotoneCubic":var L=w?h:d;switch(p){case 0:if(null===L[r+1])break;p=1;case 1:if(!(C?l.length===i[a].length:r===i[a].length-2))break;case 2:var M=w?l:l.slice().reverse(),P=w?L:L.slice().reverse(),I=(s=P,M.map((function(t,e){return[t,s[e]]})).filter((function(t){return null!==t[1]}))),T=I.length>1?Na(I):I,z=[];C&&(S?v=I:z=v.reverse());var X=0,R=0;if(function(t,e){for(var i=function(t){var e=[],i=0;return t.forEach((function(t){null!==t?i++:i>0&&(e.push(i),i=0)})),i>0&&e.push(i),e}(t),a=[],s=0,r=0;s4?(e+="C".concat(a[0],", ").concat(a[1]),e+=", ".concat(a[2],", ").concat(a[3]),e+=", ".concat(a[4],", ").concat(a[5])):s>2&&(e+="S".concat(a[0],", ").concat(a[1]),e+=", ".concat(a[2],", ").concat(a[3]))}return e}(t),i=R,a=(R+=t.length)-1;S?x=k.move(I[i][0],I[i][1])+e:C?x=k.move(z[i][0],z[i][1])+k.line(I[i][0],I[i][1])+e+k.line(z[a][0],z[a][1]):(x=k.move(I[i][0],I[i][1])+e,b=x+k.line(I[a][0],A)+k.line(I[i][0],A)+"z",v.push(b)),m.push(x)})),C&&X>1&&!S){var E=m.slice(X).reverse();m.splice(X),E.forEach((function(t){return m.push(t)}))}p=0}break;case"smooth":var Y=.35*(n-u);if(null===i[a][r])p=0;else switch(p){case 0:if(f=u,x=S?k.move(u,d[r])+k.line(u,g):k.move(u,g),b=k.move(u,g),null===i[a][r+1]||void 0===i[a][r+1]){m.push(x),v.push(b);break}if(p=1,r=i[a].length-2&&(S&&(x+=k.curve(n,o,n,o,n,c)+k.move(n,c)),b+=k.curve(n,o,n,o,n,A)+k.line(f,A)+"z",m.push(x),v.push(b),p=-1)}}u=n,g=o;break;default:var F=function(t,e,i){var a=[];switch(t){case"stepline":a=k.line(e,null,"H")+k.line(null,i,"V");break;case"linestep":a=k.line(null,i,"V")+k.line(e,null,"H");break;case"straight":a=k.line(e,i)}return a};if(null===i[a][r])p=0;else switch(p){case 0:if(f=u,x=S?k.move(u,d[r])+k.line(u,g):k.move(u,g),b=k.move(u,g),null===i[a][r+1]||void 0===i[a][r+1]){m.push(x),v.push(b);break}if(p=1,r=i[a].length-2&&(S&&(x+=k.line(n,c)),b+=k.line(n,A)+k.line(f,A)+"z",m.push(x),v.push(b),p=-1)}}u=n,g=o}return{linePaths:m,areaPaths:v,pX:u,pY:g,pathState:p,segmentStartX:f,linePath:x,areaPath:b}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var n=this.strokeWidth-r.config.markers.strokeWidth/2;n>0||(n=0);var o=this.markers.plotChartMarkers({pointsPos:e,seriesIndex:s,j:a+1,pSize:n,alwaysDrawMarker:!0});null!==o&&this.elPointsMain.add(o)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,n=r(t)/this.height,o=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,n=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,n)}return i}}function e(e,a,s,n,o){n=void 0===n?0:n,o=void 0===o?0:o;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=n}(e,l=t[0],o)?(e.push(l),i(t.slice(1),e,s,n)):(h=s.cutArea(r(e),n),n.push(s.getCoordinates(e)),i(t,[],h,n)),n;n.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;e1&&u&&u.show){var g=i.config.series[o].name||"";if(g&&d.xMin<1/0&&d.yMin<1/0){var p=u.offsetX,f=u.offsetY,x=u.borderColor,b=u.borderWidth,m=u.borderRadius,y=u.style,w=y.color||i.config.chart.foreColor,k={left:y.padding.left,right:y.padding.right,top:y.padding.top,bottom:y.padding.bottom},A=a.getTextRects(g,y.fontSize,y.fontFamily),C=A.width+k.left+k.right,S=A.height+k.top+k.bottom,L=d.xMin+(p||0),M=d.yMin+(f||0),P=a.drawRect(L,M,C,S,m,y.background,1,b,x),I=a.drawText({x:L+k.left,y:M+k.top+.75*A.height,text:g,fontSize:y.fontSize,fontFamily:y.fontFamily,fontWeight:y.fontWeight,foreColor:w,cssClass:y.cssClass||""});l.add(P),l.add(I)}}l.add(c),r.add(l)})),r}},{key:"getFontSize",value:function(t){var e=this.w;var i=function t(e){var i,a=0;if(Array.isArray(e[0]))for(i=0;ir-a&&l.width<=n-s){var h=o.rotateAroundCenter(t.node);t.node.setAttribute("transform","rotate(-90 ".concat(h.x," ").concat(h.y,") translate(").concat(l.height/3,")"))}}},{key:"truncateLabels",value:function(t,e,i,a,s,r){var n=new Mi(this.ctx),o=n.getTextRects(t,e).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,l=n.getTextBasedOnMaxWidth({text:t,maxWidth:o,fontSize:e});return t.length!==l.length&&o/e<5?"":l}},{key:"animateTreemap",value:function(t,e,i,a){var s=new y(this.ctx);s.animateRect(t,e,i,a,(function(){s.animationCompleted(t)}))}}]),t}(),Va=86400,Ua=10/Va,qa=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return s(t,[{key:"calculateTimeScaleTicks",value:function(t,e){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new zi(this.ctx),r=(e-t)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r5e4&&(a.globals.disableZoomOut=!0);var n=s.getTimeUnitsfromTimestamp(t,e,this.utc),o=a.globals.gridWidth/r,l=o/24,h=l/60,c=h/60,d=Math.floor(24*r),g=Math.floor(1440*r),p=Math.floor(r*Va),f=Math.floor(r),x=Math.floor(r/30),b=Math.floor(r/365),m={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},v={firstVal:m,currentMillisecond:m.minMillisecond,currentSecond:m.minSecond,currentMinute:m.minMinute,currentHour:m.minHour,currentMonthDate:m.minDate,currentDate:m.minDate,currentMonth:m.minMonth,currentYear:m.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:l,minutesWidthOnXAxis:h,secondsWidthOnXAxis:c,numberOfSeconds:p,numberOfMinutes:g,numberOfHours:d,numberOfDays:f,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case"years":this.generateYearScale(v);break;case"months":case"half_year":this.generateMonthScale(v);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(v);break;case"hours":this.generateHourScale(v);break;case"minutes_fives":case"minutes":this.generateMinuteScale(v);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(v)}var y=this.timeScaleArray.map((function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?u(u({},e),{},{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?u(u({},e),{},{value:t.value}):"minute"===t.unit?u(u({},e),{},{value:t.value,minute:t.value}):"second"===t.unit?u(u({},e),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,s=Math.ceil(a.globals.gridWidth/120),r=t.value;void 0!==a.config.xaxis.tickAmount&&(s=a.config.xaxis.tickAmount),y.length>s&&(e=Math.floor(y.length/s));var n=!1,o=!1;switch(i.tickInterval){case"years":"year"===t.unit&&(n=!0);break;case"half_year":e=7,"year"===t.unit&&(n=!0);break;case"months":e=1,"year"===t.unit&&(n=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(n=!0),30===r&&(o=!0);break;case"months_days":e=10,"month"===t.unit&&(n=!0),30===r&&(o=!0);break;case"week_days":e=8,"month"===t.unit&&(n=!0);break;case"days":e=1,"month"===t.unit&&(n=!0);break;case"hours":"day"===t.unit&&(n=!0);break;case"minutes_fives":case"seconds_fives":r%5!=0&&(o=!0);break;case"seconds_tens":r%10!=0&&(o=!0)}if("hours"===i.tickInterval||"minutes_fives"===i.tickInterval||"seconds_tens"===i.tickInterval||"seconds_fives"===i.tickInterval){if(!o)return!0}else if((r%e==0||n)&&!o)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new fa(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval="years";break;case t>800:this.tickInterval="half_year";break;case t>180:this.tickInterval="months";break;case t>90:this.tickInterval="months_fortnight";break;case t>60:this.tickInterval="months_days";break;case t>30:this.tickInterval="week_days";break;case t>2:this.tickInterval="days";break;case e>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,n=e.minYear,o=0,l=new zi(this.ctx),h="year";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);o=(l.determineDaysOfYear(e.minYear)-c+1)*s,n=e.minYear+1,this.timeScaleArray.push({position:o,value:n,unit:h,year:n,month:v.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:o,value:n,unit:h,year:a,month:v.monthMod(i+1)});for(var d=n,u=o,g=0;g1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,o=v.monthMod(a+1);var u=s+d,g=v.monthMod(o),p=o;0===o&&(c="year",p=u,g=1,u+=d+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:u,month:g})}else this.timeScaleArray.push({position:l,value:o,unit:c,year:s,month:v.monthMod(a)});for(var f=o+1,x=l,b=0,m=1;bn.determineDaysOfMonths(e+1,i)?(h=1,o="month",u=e+=1,e):e},d=(24-e.minHour)*s,u=l,g=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,u=v.monthMod(e.minMonth),o="month",h=e.minDate):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,u=l,g=c(h=l,i,a),1!==u&&(o="day")),this.timeScaleArray.push({position:d,value:u,unit:o,year:this._getYear(a,g,0),month:v.monthMod(g),day:h});for(var p=d,f=0;fo.determineDaysOfMonths(e+1,s)&&(f=1,e+=1),{month:e,date:f}},c=function(t,e){return t>o.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),u=d*r,g=e.minHour+1,p=g;60===d&&(u=0,p=g=e.minHour);var f=i;p>=24&&(p=0,l="day",g=f+=1);var x=h(f,a).month;x=c(f,x),g>31&&(g=f=1),this.timeScaleArray.push({position:u,value:g,unit:l,day:f,hour:p,year:s,month:v.monthMod(x)}),p++;for(var b=u,m=0;m=24)p=0,l="day",x=h(f+=1,x).month,x=c(f,x);var y=this._getYear(s,x,0);b=60*r+b;var w=0===p?f:p;this.timeScaleArray.push({position:b,value:w,unit:l,hour:p,day:f,year:y,month:v.monthMod(x)}),p++}}},{key:"generateMinuteScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,n=t.currentMonth,o=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,u=r,g=n,p=o,f=s,x=(60-i-e/1e3)*h,b=0;b=60&&(d=0,24===(f+=1)&&(f=0)),this.timeScaleArray.push({position:x,value:d,unit:"minute",hour:f,minute:d,day:u,year:this._getYear(p,g,0),month:v.monthMod(g)}),x+=l,d++}},{key:"generateSecondScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,n=t.currentMonth,o=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,u=r,g=n,p=o,f=s,x=(1e3-e)/1e3*l,b=0;b=60&&(c=0,++d>=60&&(d=0,24===++f&&(f=0))),this.timeScaleArray.push({position:x,value:c,unit:"second",hour:f,minute:d,second:c,day:u,year:this._getYear(p,g,0),month:v.monthMod(g)}),x+=l,c++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),"minute"===t.unit?i+=":"+("0"+e).slice(-2):i+=":"+(t.minute?("0"+t.minute).slice(-2):"00"),"second"===t.unit?i+=":"+("0"+e).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new zi(e.ctx),r=e.createRawDateString(t,a),n=s.getDate(s.parseDate(r));if(e.utc||(n=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var o="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(o=l.year),"month"===t.unit&&(o=l.month),"day"===t.unit&&(o=l.day),"hour"===t.unit&&(o=l.hour),"minute"===t.unit&&(o=l.minute),"second"===t.unit&&(o=l.second),a=s.formatDate(n,o)}else a=s.formatDate(n,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new Mi(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,n=t.map((function(n,o){if(o>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return n.position>h+l+10?(r=o,n):null}return n}));return n=n.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Za=function(){function t(e,a){i(this,t),this.ctx=a,this.w=a.w,this.el=e}return s(t,[{key:"setupElements",value:function(){var t=this.w,e=t.globals,i=t.config,a=i.chart.type;e.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].includes(a),e.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].includes(a),e.isBarHorizontal=["bar","rangeBar","boxPlot"].includes(a)&&i.plotOptions.bar.horizontal,e.chartClass=".apexcharts".concat(e.chartID),e.dom.baseEl=this.el,e.dom.elWrap=document.createElement("div"),Mi.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:"apexcharts-canvas ".concat(e.chartClass.substring(1))}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=window.SVG().addTo(e.dom.elWrap),e.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(i.chart.offsetX,", ").concat(i.chart.offsetY,")")}),e.dom.Paper.node.style.background="dark"!==i.theme.mode||i.chart.background?"light"!==i.theme.mode||i.chart.background?i.chart.background:"#fff":"#343A3F",this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,"foreignObject"),Mi.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement("div"),e.dom.elLegendWrap.classList.add("apexcharts-legend"),e.dom.elWrap.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),e.dom.elGraphical=e.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=this.ctx,s=i.config,r=i.globals,n={line:{series:[],i:[]},area:{series:[],i:[]},scatter:{series:[],i:[]},bubble:{series:[],i:[]},bar:{series:[],i:[]},candlestick:{series:[],i:[]},boxPlot:{series:[],i:[]},rangeBar:{series:[],i:[]},rangeArea:{series:[],seriesRangeEnd:[],i:[]}},o=s.chart.type||"line",l=null,h=0;r.series.forEach((function(e,a){var s,c,d="column"===(null===(s=t[a])||void 0===s?void 0:s.type)?"bar":(null===(c=t[a])||void 0===c?void 0:c.type)||("column"===o?"bar":o);n[d]?("rangeArea"===d?(n[d].series.push(r.seriesRangeStart[a]),n[d].seriesRangeEnd.push(r.seriesRangeEnd[a])):n[d].series.push(e),n[d].i.push(a),"bar"===d&&(i.globals.columnSeries=n.bar)):["heatmap","treemap","pie","donut","polarArea","radialBar","radar"].includes(d)?l=d:console.warn("You have specified an unrecognized series type (".concat(d,").")),o!==d&&"scatter"!==d&&h++})),h>0&&(l&&console.warn("Chart or series type ".concat(l," cannot appear with other chart or series types.")),n.bar.series.length>0&&s.plotOptions.bar.horizontal&&(h-=n.bar.series.length,n.bar={series:[],i:[]},i.globals.columnSeries={series:[],i:[]},console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"))),r.comboCharts||(r.comboCharts=h>0);var c=new Ga(a,e),d=new za(a,e);a.pie=new Ya(a);var u=new Oa(a);a.rangeBar=new Fa(a,e);var g=new Ha(a),p=[];if(r.comboCharts){var x,b,m=new Pi(a);if(n.area.series.length>0)(x=p).push.apply(x,f(m.drawSeriesByGroup(n.area,r.areaGroups,"area",c)));if(n.bar.series.length>0)if(s.chart.stacked){var v=new Ta(a,e);p.push(v.draw(n.bar.series,n.bar.i))}else a.bar=new Ia(a,e),p.push(a.bar.draw(n.bar.series,n.bar.i));if(n.rangeArea.series.length>0&&p.push(c.draw(n.rangeArea.series,"rangeArea",n.rangeArea.i,n.rangeArea.seriesRangeEnd)),n.line.series.length>0)(b=p).push.apply(b,f(m.drawSeriesByGroup(n.line,r.lineGroups,"line",c)));if(n.candlestick.series.length>0&&p.push(d.draw(n.candlestick.series,"candlestick",n.candlestick.i)),n.boxPlot.series.length>0&&p.push(d.draw(n.boxPlot.series,"boxPlot",n.boxPlot.i)),n.rangeBar.series.length>0&&p.push(a.rangeBar.draw(n.rangeBar.series,n.rangeBar.i)),n.scatter.series.length>0){var y=new Ga(a,e,!0);p.push(y.draw(n.scatter.series,"scatter",n.scatter.i))}if(n.bubble.series.length>0){var w=new Ga(a,e,!0);p.push(w.draw(n.bubble.series,"bubble",n.bubble.i))}}else switch(s.chart.type){case"line":p=c.draw(r.series,"line");break;case"area":p=c.draw(r.series,"area");break;case"bar":if(s.chart.stacked)p=new Ta(a,e).draw(r.series);else a.bar=new Ia(a,e),p=a.bar.draw(r.series);break;case"candlestick":p=new za(a,e).draw(r.series,"candlestick");break;case"boxPlot":p=new za(a,e).draw(r.series,s.chart.type);break;case"rangeBar":p=a.rangeBar.draw(r.series);break;case"rangeArea":p=c.draw(r.seriesRangeStart,"rangeArea",void 0,r.seriesRangeEnd);break;case"heatmap":p=new Ra(a,e).draw(r.series);break;case"treemap":p=new ja(a,e).draw(r.series);break;case"pie":case"donut":case"polarArea":p=a.pie.draw(r.series);break;case"radialBar":p=u.draw(r.series);break;case"radar":p=g.draw(r.series);break;default:p=c.draw(r.series)}return p}},{key:"setSVGDimensions",value:function(){var t=this.w,e=t.globals,i=t.config;i.chart.width=i.chart.width||"100%",i.chart.height=i.chart.height||"auto",e.svgWidth=i.chart.width,e.svgHeight=i.chart.height;var a=v.getDimensions(this.el),s=i.chart.width.toString().split(/[0-9]+/g).pop();"%"===s?v.isNumber(a[0])&&(0===a[0].width&&(a=v.getDimensions(this.el.parentNode)),e.svgWidth=a[0]*parseInt(i.chart.width,10)/100):"px"!==s&&""!==s||(e.svgWidth=parseInt(i.chart.width,10));var r=String(i.chart.height).toString().split(/[0-9]+/g).pop();if("auto"!==e.svgHeight&&""!==e.svgHeight)if("%"===r){var n=v.getDimensions(this.el.parentNode);e.svgHeight=n[1]*parseInt(i.chart.height,10)/100}else e.svgHeight=parseInt(i.chart.height,10);else e.svgHeight=e.axisCharts?e.svgWidth/1.61:e.svgWidth/1.2;if(e.svgWidth=Math.max(e.svgWidth,0),e.svgHeight=Math.max(e.svgHeight,0),Mi.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),"%"!==r){var o=i.chart.sparkline.enabled?0:e.axisCharts?i.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight="".concat(e.svgHeight+o,"px")}e.dom.elWrap.style.width="".concat(e.svgWidth,"px"),e.dom.elWrap.style.height="".concat(e.svgHeight,"px")}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i=t.translateX;Mi.setAttrs(t.dom.elGraphical.node,{transform:"translate(".concat(i,", ").concat(e,")")})}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,["top","bottom"].includes(t.config.legend.position)&&t.config.legend.show&&!t.config.legend.floating&&(i=new ba(this.ctx).legendHelpers.getLegendDimensions().clwh+7);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var n=v.getBoundingClientRect(s);r=n.bottom;var o=n.bottom-n.top;r=Math.max(2.05*t.globals.radialSize,o)}var l=Math.ceil(r+e.translateY+i+a);e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",l),t.config.chart.height&&String(t.config.chart.height).includes("%")||(e.dom.elWrap.style.height="".concat(l,"px"),Mi.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight="".concat(l,"px"))}},{key:"coreCalculations",value:function(){new ia(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(){return[]}))},i=new Bi,a=this.w.globals,s={dataWasParsed:a.dataWasParsed,originalSeries:a.originalSeries};i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e(),s.dataWasParsed&&(a.dataWasParsed=s.dataWasParsed,a.originalSeries=s.originalSeries)}},{key:"isMultipleY",value:function(){return!!(Array.isArray(this.w.config.yaxis)&&this.w.config.yaxis.length>1)&&(this.w.globals.isMultipleYAxis=!0,!0)}},{key:"xySettings",value:function(){var t=this.w,e=null;if(t.globals.axisCharts){if("back"===t.config.xaxis.crosshairs.position&&new oa(this.ctx).drawXCrosshairs(),"back"===t.config.yaxis[0].crosshairs.position&&new oa(this.ctx).drawYCrosshairs(),"datetime"===t.config.xaxis.type&&void 0===t.config.xaxis.labels.formatter){this.ctx.timeScale=new qa(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new Pi(this.ctx).getCalculatedRatios()}return e}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,e=this.ctx,i=this.w;if(i.config.chart.brush.enabled&&"function"!=typeof i.config.chart.events.selection){var a=Array.isArray(i.config.chart.brush.targets)?i.config.chart.brush.targets:[i.config.chart.brush.target];a.forEach((function(i){var a=e.constructor.getChartByID(i);a.w.globals.brushSource=t.ctx,"function"!=typeof a.w.config.chart.events.zoomed&&(a.w.config.chart.events.zoomed=function(){return t.updateSourceChart(a)}),"function"!=typeof a.w.config.chart.events.scrolled&&(a.w.config.chart.events.scrolled=function(){return t.updateSourceChart(a)})})),i.config.chart.events.selection=function(t,i){a.forEach((function(t){e.constructor.getChartByID(t).ctx.updateHelpers._updateOptions({xaxis:{min:i.xaxis.min,max:i.xaxis.max}},!1,!1,!1,!1)}))}}}}]),t}(),$a=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:"_updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var o=[e.ctx];s&&(o=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(o=[e.ctx],e.ctx.w.globals.isExecCalled=!1),o.forEach((function(s,l){var h=s.w;if(h.globals.shouldAnimate=a,i||(h.globals.resized=!0,h.globals.dataChanged=!0,a&&s.series.getPreviousPaths()),t&&"object"===b(t)&&(s.config=new Wi(t),t=Pi.extendArrayProps(s.config,t,h),s.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,h.config=v.extend(h.config,t),r&&(h.globals.lastXAxis=t.xaxis?v.clone(t.xaxis):[],h.globals.lastYAxis=t.yaxis?v.clone(t.yaxis):[],h.globals.initialConfig=v.extend({},h.config),h.globals.initialSeries=v.clone(h.config.series),t.series))){for(var c=0;c2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r=i.w;return r.globals.shouldAnimate=e,r.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),i.ctx.data.resetParsingFlags(),i.ctx.data.parseData(t),a&&(r.globals.initialConfig.series=v.clone(r.config.series),r.globals.initialSeries=v.clone(r.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:"_extendSeries",value:function(t,e){var i=this.w,a=i.config.series[e];return u(u({},i.config.series[e]),{},{name:t.name?t.name:null==a?void 0:a.name,color:t.color?t.color:null==a?void 0:a.color,type:t.type?t.type:null==a?void 0:a.type,group:t.group?t.group:null==a?void 0:a.group,hidden:void 0!==t.hidden?t.hidden:null==a?void 0:a.hidden,data:t.data?t.data:null==a?void 0:a.data,zIndex:void 0!==t.zIndex?t.zIndex:e})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.findOne("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")):void 0===e&&(a=i.globals.dom.Paper.findOne("".concat(s," path[j='").concat(t,"']")),"pie"!==i.config.chart.type&&"polarArea"!==i.config.chart.type&&"donut"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new Mi(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new Ni(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){return t.chart&&t.chart.stacked&&"100%"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();!function(){function t(){for(var t=arguments.length>0&&arguments[0]!==h?arguments[0]:[],s=arguments.length>1?arguments[1]:h,r=arguments.length>2?arguments[2]:h,n=arguments.length>3?arguments[3]:h,o=arguments.length>4?arguments[4]:h,l=arguments.length>5?arguments[5]:h,h=arguments.length>6?arguments[6]:h,c=t.slice(s,r||h),d=n.slice(o,l||h),u=0,g={pos:[0,0],start:[0,0]},p={pos:[0,0],start:[0,0]};;){if(c[u]=e.call(g,c[u]),d[u]=e.call(p,d[u]),c[u][0]!=d[u][0]||"M"==c[u][0]||"A"==c[u][0]&&(c[u][4]!=d[u][4]||c[u][5]!=d[u][5])?(Array.prototype.splice.apply(c,[u,1].concat(a.call(g,c[u]))),Array.prototype.splice.apply(d,[u,1].concat(a.call(p,d[u])))):(c[u]=i.call(g,c[u]),d[u]=i.call(p,d[u])),++u==c.length&&u==d.length)break;u==c.length&&c.push(["C",g.pos[0],g.pos[1],g.pos[0],g.pos[1],g.pos[0],g.pos[1]]),u==d.length&&d.push(["C",p.pos[0],p.pos[1],p.pos[0],p.pos[1],p.pos[0],p.pos[1]])}return{start:c,dest:d}}function e(t){switch(t[0]){case"z":case"Z":t[0]="L",t[1]=this.start[0],t[2]=this.start[1];break;case"H":t[0]="L",t[2]=this.pos[1];break;case"V":t[0]="L",t[2]=t[1],t[1]=this.pos[0];break;case"T":t[0]="Q",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case"S":t[0]="C",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0]}return t}function i(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],-1!="SCQT".indexOf(t[0])&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function a(t){var e=[t];switch(t[0]){case"M":return this.pos=this.start=[t[1],t[2]],e;case"L":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case"Q":t[6]=t[4],t[5]=t[3],t[4]=1*t[4]/3+2*t[2]/3,t[3]=1*t[3]/3+2*t[1]/3,t[2]=1*this.pos[1]/3+2*t[2]/3,t[1]=1*this.pos[0]/3+2*t[1]/3;break;case"A":e=function(t,e){var i,a,s,r,n,o,l,h,c,d,u,g,p,f,x,b,m,v,y,w,k,A,C,S,L,M,P=Math.abs(e[1]),I=Math.abs(e[2]),T=e[3]%360,z=e[4],X=e[5],R=e[6],E=e[7],Y=new bt(t),H=new bt(R,E),O=[];if(0===P||0===I||Y.x===H.x&&Y.y===H.y)return[["C",Y.x,Y.y,H.x,H.y,H.x,H.y]];i=new bt((Y.x-H.x)/2,(Y.y-H.y)/2).transform((new vt).rotate(T)),a=i.x*i.x/(P*P)+i.y*i.y/(I*I),a>1&&(P*=a=Math.sqrt(a),I*=a);s=(new vt).rotate(T).scale(1/P,1/I).rotate(-T),Y=Y.transform(s),H=H.transform(s),r=[H.x-Y.x,H.y-Y.y],o=r[0]*r[0]+r[1]*r[1],n=Math.sqrt(o),r[0]/=n,r[1]/=n,l=o<4?Math.sqrt(1-o/4):0,z===X&&(l*=-1);h=new bt((H.x+Y.x)/2+l*-r[1],(H.y+Y.y)/2+l*r[0]),c=new bt(Y.x-h.x,Y.y-h.y),d=new bt(H.x-h.x,H.y-h.y),u=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(u*=-1);g=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(g*=-1);X&&u>g&&(g+=2*Math.PI);!X&&u0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0;if(!1===e)return!1;for(var i=e,a=t.length;i(t.changedTouches&&(t=t.changedTouches[0]),{x:t.clientX,y:t.clientY});class Qa{constructor(t){t.remember("_draggable",this),this.el=t,this.drag=this.drag.bind(this),this.startDrag=this.startDrag.bind(this),this.endDrag=this.endDrag.bind(this)}init(t){t?(this.el.on("mousedown.drag",this.startDrag),this.el.on("touchstart.drag",this.startDrag,{passive:!1})):(this.el.off("mousedown.drag"),this.el.off("touchstart.drag"))}startDrag(t){const e=!t.type.indexOf("mouse");if(e&&1!==t.which&&0!==t.buttons)return;if(this.el.dispatch("beforedrag",{event:t,handler:this}).defaultPrevented)return;t.preventDefault(),t.stopPropagation(),this.init(!1),this.box=this.el.bbox(),this.lastClick=this.el.point(Ja(t));const i=(e?"mouseup":"touchend")+".drag";zt(window,(e?"mousemove":"touchmove")+".drag",this.drag,this,{passive:!1}),zt(window,i,this.endDrag,this,{passive:!1}),this.el.fire("dragstart",{event:t,handler:this,box:this.box})}drag(t){const{box:e,lastClick:i}=this,a=this.el.point(Ja(t)),s=a.x-i.x,r=a.y-i.y;if(!s&&!r)return e;const n=e.x+s,o=e.y+r;this.box=new kt(n,o,e.w,e.h),this.lastClick=a,this.el.dispatch("dragmove",{event:t,handler:this,box:this.box}).defaultPrevented||this.move(n,o)}move(t,e){"svg"===this.el.type?gi.prototype.move.call(this.el,t,e):this.el.move(t,e)}endDrag(t){this.drag(t),this.el.fire("dragend",{event:t,handler:this,box:this.box}),Xt(window,"mousemove.drag"),Xt(window,"touchmove.drag"),Xt(window,"mouseup.drag"),Xt(window,"touchend.drag"),this.init(!0)}} +/*! + * @svgdotjs/svg.select.js - An extension of svg.js which allows to select elements with mouse + * @version 4.0.1 + * https://github.com/svgdotjs/svg.select.js + * + * @copyright Ulrich-Matthias Schäfer + * @license MIT + * + * BUILT: Mon Jul 01 2024 15:04:42 GMT+0200 (Central European Summer Time) + */ +function Ka(t,e,i,a=null){return function(s){s.preventDefault(),s.stopPropagation();var r=s.pageX||s.touches[0].pageX,n=s.pageY||s.touches[0].pageY;e.fire(t,{x:r,y:n,event:s,index:a,points:i})}}function ts([t,e],{a:i,b:a,c:s,d:r,e:n,f:o}){return[t*i+e*s+n,t*a+e*r+o]}Q(Gt,{draggable(t=!0){return(this.remember("_draggable")||new Qa(this)).init(t),this}});let es=class{constructor(t){this.el=t,t.remember("_selectHandler",this),this.selection=new gi,this.order=["lt","t","rt","r","rb","b","lb","l","rot"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.createRot=t.createRot||this.createRotFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.updateRot=t.updateRot||this.updateRotFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createResizeHandles(),this.updateResizeHandles(),this.createRotationHandle(),this.updateRotationHandle(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.handlePoints).addClass("svg_select_shape")}updateSelection(){this.selection.get(0).plot(this.handlePoints)}createResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.createHandle.call(this,this.selection,t,e,i,a),this.selection.get(e+1).addClass("svg_select_handle svg_select_handle_"+a).on("mousedown.selection touchstart.selection",Ka(a,this.el,this.handlePoints,e))}))}createHandleFn(t){t.polyline()}updateHandleFn(t,e,i,a){const s=a.at(i-1),r=a[(i+1)%a.length],n=e,o=[n[0]-s[0],n[1]-s[1]],l=[n[0]-r[0],n[1]-r[1]],h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),c=Math.sqrt(l[0]*l[0]+l[1]*l[1]),d=[o[0]/h,o[1]/h],u=[l[0]/c,l[1]/c],g=[n[0]-10*d[0],n[1]-10*d[1]],p=[n[0]-10*u[0],n[1]-10*u[1]];t.plot([g,n,p])}updateResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.updateHandle.call(this,this.selection.get(e+1),t,e,i,a)}))}createRotFn(t){t.line(),t.circle(5)}getPoint(t){return this.handlePoints[this.order.indexOf(t)]}getPointHandle(t){return this.selection.get(this.order.indexOf(t)+1)}updateRotFn(t,e){const i=this.getPoint("t");t.get(0).plot(i[0],i[1],e[0],e[1]),t.get(1).center(e[0],e[1])}createRotationHandle(){const t=this.selection.group().addClass("svg_select_handle_rot").on("mousedown.selection touchstart.selection",Ka("rot",this.el,this.handlePoints));this.createRot.call(this,t)}updateRotationHandle(){const t=this.selection.findOne("g.svg_select_handle_rot");this.updateRot(t,this.rotationPoint,this.handlePoints)}updatePoints(){const t=this.el.bbox(),e=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.handlePoints=this.getHandlePoints(t).map((t=>ts(t,e))),this.rotationPoint=ts(this.getRotationPoint(t),e)}getHandlePoints({x:t,x2:e,y:i,y2:a,cx:s,cy:r}=this.el.bbox()){return[[t,i],[s,i],[e,i],[e,r],[e,a],[s,a],[t,a],[t,r]]}getRotationPoint({y:t,cx:e}=this.el.bbox()){return[e,t-20]}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updateResizeHandles(),this.updateRotationHandle()}};const is=t=>function(e=!0,i={}){"object"==typeof e&&(i=e,e=!0);let a=this.remember("_"+t.name);return a||(e.prototype instanceof es?(a=new e(this),e=!0):a=new t(this),this.remember("_"+t.name,a)),a.active(e,i),this}; +/*! + * @svgdotjs/svg.resize.js - An extension for svg.js which allows to resize elements which are selected + * @version 2.0.4 + * https://github.com/svgdotjs/svg.resize.js + * + * @copyright [object Object] + * @license MIT + * + * BUILT: Fri Sep 13 2024 12:43:14 GMT+0200 (Central European Summer Time) + */ +/*! + * @svgdotjs/svg.select.js - An extension of svg.js which allows to select elements with mouse + * @version 4.0.1 + * https://github.com/svgdotjs/svg.select.js + * + * @copyright Ulrich-Matthias Schäfer + * @license MIT + * + * BUILT: Mon Jul 01 2024 15:04:42 GMT+0200 (Central European Summer Time) + */ +function as(t,e,i,a=null){return function(s){s.preventDefault(),s.stopPropagation();var r=s.pageX||s.touches[0].pageX,n=s.pageY||s.touches[0].pageY;e.fire(t,{x:r,y:n,event:s,index:a,points:i})}}function ss([t,e],{a:i,b:a,c:s,d:r,e:n,f:o}){return[t*i+e*s+n,t*a+e*r+o]}Q(Gt,{select:is(es)}),Q([Ge,je,xe],{pointSelect:is(class{constructor(t){this.el=t,t.remember("_pointSelectHandler",this),this.selection=new gi,this.order=["lt","t","rt","r","rb","b","lb","l","rot"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createPointHandles(),this.updatePointHandles(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.points).addClass("svg_select_shape_pointSelect")}updateSelection(){this.selection.get(0).plot(this.points)}createPointHandles(){this.points.forEach(((t,e,i)=>{this.createHandle.call(this,this.selection,t,e,i),this.selection.get(e+1).addClass("svg_select_handle_point").on("mousedown.selection touchstart.selection",Ka("point",this.el,this.points,e))}))}createHandleFn(t){t.circle(5)}updateHandleFn(t,e){t.center(e[0],e[1])}updatePointHandles(){this.points.forEach(((t,e,i)=>{this.updateHandle.call(this,this.selection.get(e+1),t,e,i)}))}updatePoints(){const t=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.points=this.el.array().map((e=>ts(e,t)))}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updatePointHandles()}})});class rs{constructor(t){this.el=t,t.remember("_selectHandler",this),this.selection=new gi,this.order=["lt","t","rt","r","rb","b","lb","l","rot"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.createRot=t.createRot||this.createRotFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.updateRot=t.updateRot||this.updateRotFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createResizeHandles(),this.updateResizeHandles(),this.createRotationHandle(),this.updateRotationHandle(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.handlePoints).addClass("svg_select_shape")}updateSelection(){this.selection.get(0).plot(this.handlePoints)}createResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.createHandle.call(this,this.selection,t,e,i,a),this.selection.get(e+1).addClass("svg_select_handle svg_select_handle_"+a).on("mousedown.selection touchstart.selection",as(a,this.el,this.handlePoints,e))}))}createHandleFn(t){t.polyline()}updateHandleFn(t,e,i,a){const s=a.at(i-1),r=a[(i+1)%a.length],n=e,o=[n[0]-s[0],n[1]-s[1]],l=[n[0]-r[0],n[1]-r[1]],h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),c=Math.sqrt(l[0]*l[0]+l[1]*l[1]),d=[o[0]/h,o[1]/h],u=[l[0]/c,l[1]/c],g=[n[0]-10*d[0],n[1]-10*d[1]],p=[n[0]-10*u[0],n[1]-10*u[1]];t.plot([g,n,p])}updateResizeHandles(){this.handlePoints.forEach(((t,e,i)=>{const a=this.order[e];this.updateHandle.call(this,this.selection.get(e+1),t,e,i,a)}))}createRotFn(t){t.line(),t.circle(5)}getPoint(t){return this.handlePoints[this.order.indexOf(t)]}getPointHandle(t){return this.selection.get(this.order.indexOf(t)+1)}updateRotFn(t,e){const i=this.getPoint("t");t.get(0).plot(i[0],i[1],e[0],e[1]),t.get(1).center(e[0],e[1])}createRotationHandle(){const t=this.selection.group().addClass("svg_select_handle_rot").on("mousedown.selection touchstart.selection",as("rot",this.el,this.handlePoints));this.createRot.call(this,t)}updateRotationHandle(){const t=this.selection.findOne("g.svg_select_handle_rot");this.updateRot(t,this.rotationPoint,this.handlePoints)}updatePoints(){const t=this.el.bbox(),e=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.handlePoints=this.getHandlePoints(t).map((t=>ss(t,e))),this.rotationPoint=ss(this.getRotationPoint(t),e)}getHandlePoints({x:t,x2:e,y:i,y2:a,cx:s,cy:r}=this.el.bbox()){return[[t,i],[s,i],[e,i],[e,r],[e,a],[s,a],[t,a],[t,r]]}getRotationPoint({y:t,cx:e}=this.el.bbox()){return[e,t-20]}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updateResizeHandles(),this.updateRotationHandle()}}const ns=t=>function(e=!0,i={}){"object"==typeof e&&(i=e,e=!0);let a=this.remember("_"+t.name);return a||(e.prototype instanceof rs?(a=new e(this),e=!0):a=new t(this),this.remember("_"+t.name,a)),a.active(e,i),this};Q(Gt,{select:ns(rs)}),Q([Ge,je,xe],{pointSelect:ns(class{constructor(t){this.el=t,t.remember("_pointSelectHandler",this),this.selection=new gi,this.order=["lt","t","rt","r","rb","b","lb","l","rot"],this.mutationHandler=this.mutationHandler.bind(this);const e=F();this.observer=new e.MutationObserver(this.mutationHandler)}init(t){this.createHandle=t.createHandle||this.createHandleFn,this.updateHandle=t.updateHandle||this.updateHandleFn,this.el.root().put(this.selection),this.updatePoints(),this.createSelection(),this.createPointHandles(),this.updatePointHandles(),this.observer.observe(this.el.node,{attributes:!0})}active(t,e){if(!t)return this.selection.clear().remove(),void this.observer.disconnect();this.init(e)}createSelection(){this.selection.polygon(this.points).addClass("svg_select_shape_pointSelect")}updateSelection(){this.selection.get(0).plot(this.points)}createPointHandles(){this.points.forEach(((t,e,i)=>{this.createHandle.call(this,this.selection,t,e,i),this.selection.get(e+1).addClass("svg_select_handle_point").on("mousedown.selection touchstart.selection",as("point",this.el,this.points,e))}))}createHandleFn(t){t.circle(5)}updateHandleFn(t,e){t.center(e[0],e[1])}updatePointHandles(){this.points.forEach(((t,e,i)=>{this.updateHandle.call(this,this.selection.get(e+1),t,e,i)}))}updatePoints(){const t=this.el.parent().screenCTM().inverseO().multiplyO(this.el.screenCTM());this.points=this.el.array().map((e=>ss(e,t)))}mutationHandler(){this.updatePoints(),this.updateSelection(),this.updatePointHandles()}})});const os=t=>(t.changedTouches&&(t=t.changedTouches[0]),{x:t.clientX,y:t.clientY}),ls=t=>{let e=1/0,i=1/0,a=-1/0,s=-1/0;for(let r=0;r{const s=t-e[0],r=(a-e[1])*i;return[s*i+e[0],r+e[1]]}));return ls(a)}(this.box,s,r)}this.el.dispatch("resize",{box:new kt(l),angle:0,eventType:this.eventType,event:t,handler:this}).defaultPrevented||this.el.size(l.width,l.height).move(l.x,l.y)}movePoint(t){this.lastEvent=t;const{x:e,y:i}=this.snapToGrid(this.el.point(os(t))),a=this.el.array().slice();a[this.index]=[e,i],this.el.dispatch("resize",{box:ls(a),angle:0,eventType:this.eventType,event:t,handler:this}).defaultPrevented||this.el.plot(a)}rotate(t){this.lastEvent=t;const e=this.startPoint,i=this.el.point(os(t)),{cx:a,cy:s}=this.box,r=e.x-a,n=e.y-s,o=i.x-a,l=i.y-s,h=Math.sqrt(r*r+n*n)*Math.sqrt(o*o+l*l);if(0===h)return;let c=Math.acos((r*o+n*l)/h)/Math.PI*180;if(!c)return;i.xdiv {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,\n.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0, 0, 0, .7);\n border: 1px solid rgba(0, 0, 0, .5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,\n.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,\n.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,\n.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0, 0, 0, .5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0, 0, 0, .5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0, 0, 0, .7);\n border: 1px solid rgba(0, 0, 0, .5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,\n.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,\n.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,\n.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0, 0, 0, .5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0, 0, 0, .5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,\n.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,\n.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_shape {\n stroke-width: 1;\n stroke-dasharray: 10 10;\n stroke: black;\n stroke-opacity: 0.1;\n pointer-events: none;\n fill: none;\n}\n\n.svg_select_handle {\n stroke-width: 3;\n stroke: black;\n fill: none;\n}\n\n.svg_select_handle_r {\n cursor: e-resize;\n}\n\n.svg_select_handle_l {\n cursor: w-resize;\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,\n.apexcharts-pan-icon,\n.apexcharts-reset-icon,\n.apexcharts-selection-icon,\n.apexcharts-toolbar-custom-icon,\n.apexcharts-zoom-icon,\n.apexcharts-zoomin-icon,\n.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,\n.apexcharts-reset-icon svg,\n.apexcharts-zoom-icon svg,\n.apexcharts-zoomin-icon svg,\n.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,\n.apexcharts-theme-dark .apexcharts-pan-icon svg,\n.apexcharts-theme-dark .apexcharts-reset-icon svg,\n.apexcharts-theme-dark .apexcharts-selection-icon svg,\n.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,\n.apexcharts-theme-dark .apexcharts-zoom-icon svg,\n.apexcharts-theme-dark .apexcharts-zoomin-icon svg,\n.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,\n.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,\n.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,\n.apexcharts-theme-light .apexcharts-reset-icon:hover svg,\n.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,\n.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,\n.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,\n.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,\n.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,\n.apexcharts-reset-icon,\n.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,\n.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0, 0, 0, .7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,\n.apexcharts-datalabel.apexcharts-element-hidden,\n.apexcharts-hide .apexcharts-series-points {\n opacity: 0;\n}\n\n.apexcharts-hidden-element-shown {\n opacity: 1;\n transition: 0.25s ease all;\n}\n\n.apexcharts-datalabel,\n.apexcharts-datalabel-label,\n.apexcharts-datalabel-value,\n.apexcharts-datalabels,\n.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-radialbar-label {\n cursor: pointer;\n}\n\n.apexcharts-annotation-rect,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-gridline,\n.apexcharts-line,\n.apexcharts-point-annotation-label,\n.apexcharts-radar-series path:not(.apexcharts-marker),\n.apexcharts-radar-series polygon,\n.apexcharts-toolbar svg,\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-xaxis-annotation-label,\n.apexcharts-yaxis-annotation-label,\n.apexcharts-zoom-rect,\n.no-pointer-events {\n pointer-events: none\n}\n\n.apexcharts-tooltip-active .apexcharts-marker {\n transition: .15s ease all\n}\n\n.apexcharts-radar-series .apexcharts-yaxis {\n pointer-events: none;\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,\n.resize-triggers,\n.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n\n.apexcharts-bar-goals-markers {\n pointer-events: none\n}\n\n.apexcharts-bar-shadows {\n pointer-events: none\n}\n\n.apexcharts-rangebar-goals-markers {\n pointer-events: none\n}\n\n.apexcharts-disable-transitions * {\n transition: none !important;\n}';var h=(null===(l=t.opts.chart)||void 0===l?void 0:l.nonce)||t.w.config.chart.nonce;h&&o.setAttribute("nonce",h),r?s.prepend(o):!1!==t.w.config.chart.injectStyleSheet&&n.head.appendChild(o)}var c=t.create(t.w.config.series,{});if(!c)return e(t);t.mount(c).then((function(){"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent("mounted",[t,t.w]),e(c)})).catch((function(t){i(t)}))}else i(new Error("Element not found"))}))}},{key:"create",value:function(t,e){var i=this,a=this.w;new cs(this).initModules();var s=this.w.globals;if(s.noData=!1,s.animationEnded=!1,!v.elementExists(this.el))return s.animationEnded=!0,null;(this.responsive.checkResponsiveConfig(e),a.config.xaxis.convertedCatToNumeric)&&new Ni(a.config).convertCatToNumericXaxis(a.config,this.ctx);if(this.core.setupElements(),"treemap"===a.config.chart.type&&(a.config.grid.show=!1,a.config.yaxis[0].show=!1),0===s.svgWidth)return s.animationEnded=!0,null;var r=t;t.forEach((function(t,e){t.hidden&&(r=i.legend.legendHelpers.getSeriesAfterCollapsing({realIndex:e}))}));var n=Pi.checkComboSeries(r,a.config.chart.type);s.comboCharts=n.comboCharts,s.comboBarCount=n.comboBarCount;var o=r.every((function(t){return t.data&&0===t.data.length}));(0===r.length||o&&s.collapsedSeries.length<1)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(r),this.theme.init(),new Vi(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),s.noData&&s.collapsedSeries.length!==s.series.length&&!a.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),s.axisCharts&&(this.core.coreCalculations(),"category"!==a.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=a.globals.minX,this.ctx.toolbar.maxX=a.globals.maxX),this.formatters.heatmapLabelFormatters(),new Pi(this).getLargestMarkerSize(),this.dimensions.plotCoords();var l=this.core.xySettings();this.grid.createGridMask();var h=this.core.plotChartType(r,l),c=new qi(this);return c.bringForward(),a.config.dataLabels.background.enabled&&c.dataLabelsBackground(),this.core.shiftGraphPosition(),a.globals.dataPoints>50&&a.globals.dom.elWrap.classList.add("apexcharts-disable-transitions"),{elGraph:h,xyRatios:l,dimensions:{plot:{left:a.globals.translateX,top:a.globals.translateY,width:a.globals.gridWidth,height:a.globals.gridHeight}}}}},{key:"mount",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new ta(i);var n,o,l=i.grid.drawGrid();(i.annotations=new Fi(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position)&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(n=l.elGridBorders)&&void 0!==n&&n.node&&a.globals.dom.elGraphical.add(l.elGridBorders));if(Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){window.removeEventListener("resize",this.windowResizeHandler),function(t,e){var i=us.get(e);i&&(i.disconnect(),us.delete(e))}(this.el.parentNode,this.parentResizeHandler);var t=this.w.config.chart.id;t&&Apex._chartInstances.forEach((function(e,i){e.id===v.escapeString(t)&&Apex._chartInstances.splice(i,1)})),new ds(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=this.w;return n.globals.selection=void 0,this.lastUpdateOptions&&JSON.stringify(this.lastUpdateOptions)===JSON.stringify(t)?this:(t.series&&(this.data.resetParsingFlags(),this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),n.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r))}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.data.resetParsingFlags(),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];this.data.resetParsingFlags();var a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.data.resetParsingFlags(),i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new ia(this.ctx).getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new ia(this.ctx).getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(t){return new Qi(this.ctx).dataURI(t)}},{key:"getSvgString",value:function(t){return new Qi(this.ctx).getSvgString(t)}},{key:"exportToCSV",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Qi(this.ctx).exportToCSV(t)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:"_windowResizeHandler",value:function(){var t=this.w.config.chart.redrawOnWindowResize;"function"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:"getChartByID",value:function(t){var e=v.escapeString(t);if(Apex._chartInstances){var i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),n=2;nt.length)&&(e=t.length);for(var i=0,a=new Array(e);i>16,o=i>>8&255,n=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(t){return t&&"object"===i(t)&&!Array.isArray(t)&&null!=t}},{key:"is",value:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;e1&&void 0!==arguments[1]?arguments[1]:2;return Number.isInteger(t)?t:parseFloat(t.toPrecision(e))}},{key:"randomId",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:"noExponents",value:function(t){var e=String(t).split(/[eE]/);if(1===e.length)return e[0];var i="",a=t<0?"-":"",s=e[0].replace(".",""),r=Number(e[1])+1;if(r<0){for(i=a+"0.";r++;)i+="0";return i+s.replace(/^-/,"")}for(r-=s.length;r--;)i+="0";return s+i}},{key:"getDimensions",value:function(t){var e=getComputedStyle(t,null),i=t.clientHeight,a=t.clientWidth;return i-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),[a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i]}},{key:"getBoundingClientRect",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:t.clientWidth,height:t.clientHeight,x:e.left,y:e.top}}},{key:"getLargestStringFromArr",value:function(t){return t.reduce((function(t,e){return Array.isArray(e)&&(e=e.reduce((function(t,e){return t.length>e.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var a=t.indexOf("Edge/");return a>0&&parseInt(t.substring(a+5,t.indexOf(".",a)),10)}}]),t}(),b=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return r(t,[{key:"setEasingFunctions",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":default:t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:"animateLine",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:"animateMarker",value:function(t,e,i,a,s,r){e||(e=0),t.attr({r:e,width:e,height:e}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll((function(){r()}))}},{key:"animateCircle",value:function(t,e,i,a,s){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&"bar"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,"line"!==h.config.chart.type||h.globals.comboCharts?s:"stroke",r,o,n,l*c)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach((function(t){var e=t.el;e.classList.remove("apexcharts-element-hidden"),e.classList.add("apexcharts-hidden-element-shown")}))}},{key:"animationCompleted",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),"function"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:"morphSVG",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr("pathFrom")),r||(r=t.attr("pathTo"));var c=function(t){return"radar"===h.config.chart.type&&(o=1),"M 0 ".concat(h.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=c()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){x.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),v=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains("apexcharts-marker")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"addDarkenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"applyFilter",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:a});break;case"darken":this.addDarkenFilter(t,e,{intensity:a})}}},{key:"addShadow",value:function(t,e,i){var a=i.blur,s=i.top,r=i.left,o=i.color,n=i.opacity,l=t.flood(Array.isArray(o)?o[e]:o,n).composite(t.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=e.top,s=e.left,r=e.blur,o=e.color,n=e.opacity,l=e.noUserSpaceOnUse,h=this.w;return t.unfilter(!0),x.isIE()&&"radialBar"===h.config.chart.type||(o=Array.isArray(o)?o[i]:o,t.filter((function(t){var e=null;e=x.isSafari()||x.isFirefox()||x.isIE()?t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r):t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(t.source),t.blend(t.source,e)})),l||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)),t}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),t}(),m=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"roundPathCorners",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}t.indexOf("NaN")>-1&&(t="");var o=t.split(/[,\s]/).reduce((function(t,e){var i=e.match("([a-zA-Z])(.+)");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;"Z"==o[o.length-1][0]&&o[0].length>2&&(h=["L",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c2&&"L"==g[0]&&u.length>2&&"L"==u[0]){var p,f,x=r(d),b=r(g),v=r(u);p=i(b,x,e),f=i(b,v,e),s(g,p),g.origPoint=b,n.push(g);var m=a(p,b,.5),y=a(b,f,.5),w=["C",m.x,m.y,y.x,y.y,f.x,f.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push(["Z"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(" ")+" "}),"")}},{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"butt";return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":o,"stroke-linecap":n})}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,"stroke-width":null!==n?n:0,stroke:null!==l?l:"none","stroke-dasharray":h}),c.node.setAttribute("fill",r),c}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none";return this.w.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i})}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t<0&&(t=0);var i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,p=void 0===u?null:u,f=t.strokeDashArray,x=void 0===f?0:f,b=this.w;return null===p&&(p=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,"fill-opacity":h,stroke:s,"stroke-opacity":d,"stroke-linecap":p,"stroke-width":o,"stroke-dasharray":x,class:g})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[" L",t,e].join(" "):"H"===i?a=[" H",t].join(" "):"V"===i&&(a=[" V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){var o=["C",t,e,i,a,s,r].join(" ");return o}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,o){var n="A";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(n="a");var l=[n,t,e,i,a,s,r,o].join(" ");return l}},{key:"renderPaths",value:function(t){var i,a=t.j,s=t.realIndex,r=t.pathFrom,o=t.pathTo,n=t.stroke,l=t.strokeWidth,h=t.strokeLinecap,c=t.fill,d=t.animationDelay,g=t.initialSpeed,u=t.dataChangeSpeed,p=t.className,f=t.shouldClipToGrid,x=void 0===f||f,m=t.bindEventsOnPaths,y=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new v(this.ctx),C=new b(this.ctx),L=this.w.config.chart.animations.enabled,P=L&&this.w.config.chart.animations.dynamicAnimation.enabled,I=!!(L&&!A.globals.resized||P&&A.globals.dataChanged&&A.globals.shouldAnimate);I?i=r:(i=o,A.globals.animationEnded=!0);var T=A.config.stroke.dashArray,M=0;M=Array.isArray(T)?T[s]:A.config.stroke.dashArray;var z=this.drawPath({d:i,stroke:n,strokeWidth:l,fill:c,fillOpacity:1,classes:p,strokeLinecap:h,strokeDashArray:M});if(z.attr("index",s),x&&z.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")}),"none"!==A.config.states.normal.filter.type)S.getDefaultFilter(z,s);else if(A.config.chart.dropShadow.enabled&&k&&(!A.config.chart.dropShadow.enabledOnSeries||A.config.chart.dropShadow.enabledOnSeries&&-1!==A.config.chart.dropShadow.enabledOnSeries.indexOf(s))){var X=A.config.chart.dropShadow;S.dropShadow(z,X,s)}y&&(z.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,z)),z.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,z)),z.node.addEventListener("mousedown",this.pathMouseDown.bind(this,z))),z.attr({pathTo:o,pathFrom:r});var E={el:z,j:a,realIndex:s,pathFrom:r,pathTo:o,fill:c,strokeWidth:l,delay:d};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(e(e({},E),{},{speed:g})),A.globals.dataChanged&&P&&I&&C.animatePathsGradually(e(e({},E),{},{speed:u})),z}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}))}},{key:"drawGradient",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf("#")&&(e=x.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=x.hexToRgba(i,s));var d=0,g=1,u=1,p=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,p=void 0!==n[3]?n[3]/100:null);var f=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"polarArea"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(f?"radial":"linear",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==p&&t.at(p,e,a)})):c.globals.dom.Paper.gradient(f?"radial":"linear",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),f){var b=c.globals.gridWidth/2,v=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:v,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute("selected","true"),o="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===o){var d=i.config.states.active.filter;if("none"!==d)a.applyFilter(t,s,d.type,d.value);else if("none"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if("none"!==i.config.states.active.filter.type)if("none"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e={};return t&&"function"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&o.attr("transform",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),y=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getStackedSeriesTotals",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"getStackedSeriesTotalsByGroups",value:function(){var t=this,e=this.w,i=[];return e.globals.seriesGroups.forEach((function(a){var s=[];e.config.series.forEach((function(t,e){a.indexOf(t.name)>-1&&s.push(e)}));var r=e.globals.series.map((function(t,e){return-1===s.indexOf(e)?e:-1})).filter((function(t){return-1!==t}));i.push(t.getStackedSeriesTotals(r))})),i}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(e+=t.config.markers.hover.sizeOffset+1),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][o]0&&(e=!0),{comboBarCount:i,comboCharts:e}}},{key:"extendArrayProps",value:function(t,e,i){return e.yaxis&&(e=t.extendYAxis(e,i)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),w=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e}return r(t,[{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),"top"===t.label.position?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var o=this.annoCtx.graphics.rotateAroundCenter(s),n=o.x,l=o.y;s.setAttribute("transform","rotate(-90 ".concat(n," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!t||void 0===e.label.text||void 0!==e.label.text&&!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,o=e.label.style.padding.right,n=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(n=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,o=e.label.style.padding.bottom);var h=s.left-a.left-r,c=s.top-a.top-n,d=this.annoCtx.graphics.drawRect(h-i.globals.barPadForNumericAxis,c,s.width+r+o,s.height+n+l,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener("mouseenter",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener("mouseleave",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener("click",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.map((function(t,e){i(t,e,"xaxis")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,"yaxis")})),e.config.annotations.points.map((function(t,e){i(t,e,"point")}))}},{key:"getY1Y2",value:function(t,e){var i,a="y1"===t?e.y:e.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var o=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");o&&(i=parseFloat(o.getAttribute("y"))),void 0!==e.seriesIndex&&s.globals.barHeight&&(i=i-s.globals.barHeight/2*(s.globals.series.length-1)+s.globals.barHeight*e.seriesIndex)}else{var n;if(s.config.yaxis[e.yAxisIndex].logarithmic)n=(a=new y(this.annoCtx.ctx).getLogVal(a,e.yAxisIndex))/s.globals.yLogRatio[e.yAxisIndex];else n=(a-s.globals.minYArr[e.yAxisIndex])/(s.globals.yRange[e.yAxisIndex]/s.globals.gridHeight);i=s.globals.gridHeight-n,!e.marker||void 0!==e.y&&null!==e.y||(i=0),s.config.yaxis[e.yAxisIndex]&&s.config.yaxis[e.yAxisIndex].reversed&&(i=n)}return"string"==typeof a&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(t,e){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,o=(e.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(o=(s-e.x)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(e.x));var n=(e.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(n=(s-e.x2)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(e.x2)),void 0!==e.x&&null!==e.x||!e.marker||(o=i.globals.gridWidth),"x1"===t&&"string"==typeof e.x&&e.x.indexOf("px")>-1&&(o=parseFloat(e.x)),"x2"===t&&"string"==typeof e.x2&&e.x2.indexOf("px")>-1&&(n=parseFloat(e.x2)),void 0!==e.seriesIndex&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(o=o-i.globals.barWidth/2*(i.globals.series.length-1)+i.globals.barWidth*e.seriesIndex),"x1"===t?o:n}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),t}(),k=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addXaxisAnnotation",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2("x1",t),o=t.label.text,n=t.strokeDashArray;if(x.isNumber(r)){if(null===t.x2||void 0===t.x2){var l=this.annoCtx.graphics.drawLine(r+t.offsetX,0+t.offsetY,r+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,n,t.borderWidth);e.appendChild(l.node),t.id&&l.node.classList.add(t.id)}else{if((a=this.helpers.getX1X2("x2",t))o){var h=o;o=a,a=h}var c=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),o-a,0,t.fillColor,t.opacity,1,t.borderColor,r);c.node.classList.add("apexcharts-annotation-rect"),c.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(c.node),t.id&&c.node.classList.add(t.id)}var d="right"===t.label.position?s.globals.gridWidth:"center"===t.label.position?s.globals.gridWidth/2:0,g=this.annoCtx.graphics.drawText({x:d+t.label.offsetX,y:(null!=a?a:o)+t.label.offsetY-3,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});g.attr({rel:i}),e.appendChild(g.node)}},{key:"_getYAxisAnnotationWidth",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf("%")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map((function(e,a){t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),S=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addPointAnnotation",value:function(t,e,i){this.w;var a=this.helpers.getX1X2("x1",t),s=this.helpers.getY1Y2("y1",t);if(x.isNumber(a)){var r={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:"apexcharts-point-annotation-marker ".concat(t.marker.cssClass," ").concat(t.id?t.id:"")},o=this.annoCtx.graphics.drawMarker(a+t.marker.offsetX,s+t.marker.offsetY,r);e.appendChild(o.node);var n=t.label.text?t.label.text:"",l=this.annoCtx.graphics.drawText({x:a+t.label.offsetX,y:s+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});if(l.attr({rel:i}),e.appendChild(l.node),t.customSVG.SVG){var h=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});h.attr({transform:"translate(".concat(a+t.customSVG.offsetX,", ").concat(s+t.customSVG.offsetY,")")}),h.node.innerHTML=t.customSVG.SVG,e.appendChild(h.node)}if(t.image.path){var c=t.image.width?t.image.width:20,d=t.image.height?t.image.height:20;o=this.annoCtx.addImage({x:a+t.image.offsetX-c/2,y:s+t.image.offsetY-d/2,width:c,height:d,path:t.image.path,appendTo:".apexcharts-point-annotations"})}t.mouseEnter&&o.node.addEventListener("mouseenter",t.mouseEnter.bind(this,t)),t.mouseLeave&&o.node.addEventListener("mouseleave",t.mouseLeave.bind(this,t)),t.click&&o.node.addEventListener("click",t.click.bind(this,t))}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var C={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},L=function(){function t(){a(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return r(t,[{key:"init",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[C],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(t){return new Date(t).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,dataLabels:{format:"scale"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+"%"}}},barLabels:{enabled:!1,margin:5,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:"16px",formatter:function(t){return t},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),P=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.graphics=new m(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new w(this),this.xAxisAnnotations=new k(this),this.yAxisAnnotations=new A(this),this.pointsAnnotations=new S(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return r(t,[{key:"drawAxesAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||"scatter"!==t.config.chart.type&&"bubble"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,p=t.borderRadius,f=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-svg":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:n||"12px",fontWeight:h||"regular",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),I=L.globals.dom.baseEl.querySelector(b);I&&I.appendChild(P.node);var T=P.bbox();if(s){var M=this.graphics.drawRect(T.x-m,T.y-C,T.width+m+w,T.height+A+C,p,d||"transparent",1,g,f,u);I.insertBefore(M.node,P.node)}}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?".apexcharts-svg":g,p=i.globals.dom.Paper.image(a);p.size(h,d).move(r,n);var f=i.globals.dom.baseEl.querySelector(u);return f&&f.appendChild(p.node),p}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=l.childNodes.length+1,c=new L,d=Object.assign({},"xaxis"===s?c.xAxisAnnotation:"yaxis"===s?c.yAxisAnnotation:c.pointAnnotation),g=x.extend(d,e);switch(s){case"xaxis":this.addXaxisAnnotation(g,l,h);break;case"yaxis":this.addYaxisAnnotation(g,l,h);break;case"point":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),p=this.helpers.addBackgroundToAnno(u,g);return p&&l.insertBefore(p.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:x.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");e.globals.memory.methodsToExec.map((function(t,i){"addText"!==t.label&&"addAnnotation"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=x.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),I=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return r(t,[{key:"isValidDate",value:function(t){return"number"!=typeof t&&!isNaN(this.parseDate(t))}},{key:"getTimeStamp",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:"getDate",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(t){return Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(u(i.months)),r=["\x01"].concat(u(i.shortMonths)),o=["\x02"].concat(u(i.days)),n=["\x03"].concat(u(i.shortDays));function l(t,e){var i=t+"";for(e=e||2;i.length12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(g))).replace(/(^|[^\\])H/g,"$1"+g)).replace(/(^|[^\\])hh+/g,"$1"+l(p))).replace(/(^|[^\\])h/g,"$1"+p);var f=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(f))).replace(/(^|[^\\])m/g,"$1"+f);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(x))).replace(/(^|[^\\])s/g,"$1"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(b)),b=Math.round(b/10);var v=g<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+b)).replace(/(^|[^\\])TT+/g,"$1"+v)).replace(/(^|[^\\])T/g,"$1"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+m)).replace(/(^|[^\\])t/g,"$1"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?"Z":y>0?"+":"-";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+":"+l(k)}e=e.replace(/(^|[^\\])K/g,"$1"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(s[0],"g"),s[c])).replace(new RegExp(r[0],"g"),r[c])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),n=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=x.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),T=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat="dd MMM"}return r(t,[{key:"xLabelFormat",value:function(t,e,i,a){var s=this.w;if("datetime"===s.config.xaxis.type&&void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter){var r=new I(this.ctx);return r.formatDate(r.getDate(e),s.config.tooltip.x.format)}return t(e,i,a)}},{key:"defaultGeneralFormatter",value:function(t){return Array.isArray(t)?t.map((function(t){return t})):t}},{key:"defaultYFormatter",value:function(t,e,i){var a=this.w;return x.isNumber(t)&&(t=0!==a.globals.yValueDecimal?t.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:a.globals.yValueDecimal):a.globals.maxYArr[i]-a.globals.minYArr[i]<5?t.toFixed(1):t.toFixed(0)),t}},{key:"setLabelFormatters",value:function(){var t=this,e=this.w;return e.globals.xaxisTooltipFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttKeyFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttZFormatter=function(t){return t},e.globals.legendFormatter=function(e){return t.defaultGeneralFormatter(e)},void 0!==e.config.xaxis.labels.formatter?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=function(t){if(x.isNumber(t)){if(!e.config.xaxis.convertedCatToNumeric&&"numeric"===e.config.xaxis.type){if(x.isNumber(e.config.xaxis.decimalsInFloat))return t.toFixed(e.config.xaxis.decimalsInFloat);var i=e.globals.maxX-e.globals.minX;return i>0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},"function"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,"function"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),M=function(t){var e,i=t.isTimeline,a=t.ctx,s=t.seriesIndex,r=t.dataPointIndex,o=t.y1,n=t.y2,l=t.w,h=l.globals.seriesRangeStart[s][r],c=l.globals.seriesRangeEnd[s][r],d=l.globals.labels[r],g=l.config.series[s].name?l.config.series[s].name:"",u=l.globals.ttKeyFormatter,p=l.config.tooltip.y.title.formatter,f={w:l,seriesIndex:s,dataPointIndex:r,start:h,end:c};("function"==typeof p&&(g=p(g,f)),null!==(e=l.config.series[s].data[r])&&void 0!==e&&e.x&&(d=l.config.series[s].data[r].x),i)||"datetime"===l.config.xaxis.type&&(d=new T(a).xLabelFormat(l.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new I(a).formatDate,w:l}));"function"==typeof u&&(d=u(d,f)),Number.isFinite(o)&&Number.isFinite(n)&&(h=o,c=n);var x="",b="",v=l.globals.colors[s];if(void 0===l.config.tooltip.x.formatter)if("datetime"===l.config.xaxis.type){var m=new I(a);x=m.formatDate(m.getDate(h),l.config.tooltip.x.format),b=m.formatDate(m.getDate(c),l.config.tooltip.x.format)}else x=h,b=c;else x=l.config.tooltip.x.formatter(h),b=l.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:x,endVal:b,ylabel:d,color:v,seriesName:g}},z=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='\n '.concat(s,'\n - \n ').concat(r,"\n ");return'
'+(i||"")+'
'+a+": "+(t.w.globals.comboCharts?"rangeArea"===t.w.config.series[o].type||"rangeBar"===t.w.config.series[o].type?c:"".concat(h,""):c)+"
"},X=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"hideYAxis",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.hideYAxis();return x.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"funnel",value:function(){return this.hideYAxis(),e(e({},this.bar()),{},{chart:{animations:{easing:"linear",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:"around",borderRadius:0,dataLabels:{position:"center"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:"candlestick",value:function(){var t=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?"rangeBar"===s.config.series[i].type||"rangeArea"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:["#fff"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var i=M(e(e({},t),{},{isTimeline:!0})),a=i.color,s=i.seriesName,r=i.ylabel,o=i.startVal,n=i.endVal;return z(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t):function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return z(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"dumbbell",value:function(t){var e,i;return null!==(e=t.plotOptions.bar)&&void 0!==e&&e.barHeight||(t.plotOptions.bar.barHeight=2),null!==(i=t.plotOptions.bar)&&void 0!==i&&i.columnWidth||(t.plotOptions.bar.columnWidth=2),t}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return z(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}}}}},{key:"brush",value:function(t){return x.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"stackedBars",value:function(){var t=this.bar();return e(e({},t),{},{plotOptions:e(e({},t.plotOptions),{},{bar:e(e({},t.plotOptions.bar),{},{borderRadiusApplication:"end",borderRadiusWhenStacked:"last"})})})}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return x.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return x.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
\n '.concat(t.config.series[e].name?t.config.series[e].name:"series-"+(e+1),": ").concat(t.globals.series[e][i],"\n
"):'
')+"
".concat(a[0],': ')+r+"
"+"
".concat(a[1],': ')+o+"
"+(n?"
".concat(a[2],': ')+n+"
":"")+"
".concat(a[3],': ')+l+"
"+"
".concat(a[4],': ')+h+"
"}}]),t}(),E=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(t){var e=t.responsiveOverride,a=this.opts,s=new L,r=new X(a);this.chartType=a.chart.type,a=this.extendYAxis(a),a=this.extendAnnotations(a);var o=s.init(),n={};if(a&&"object"===i(a)){var l,h,c,d,g,u,p,f,b,v,m={};m=-1!==["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(a.chart.type)?r[a.chart.type]():r.line(),null!==(l=a.plotOptions)&&void 0!==l&&null!==(h=l.bar)&&void 0!==h&&h.isFunnel&&(m=r.funnel()),a.chart.stacked&&"bar"===a.chart.type&&(m=r.stackedBars()),null!==(c=a.chart.brush)&&void 0!==c&&c.enabled&&(m=r.brush(m)),a.chart.stacked&&"100%"===a.chart.stackType&&(a=r.stacked100(a)),null!==(d=a.plotOptions)&&void 0!==d&&null!==(g=d.bar)&&void 0!==g&&g.isDumbbell&&(a=r.dumbbell(a)),"monotoneCubic"===(null===(u=a)||void 0===u||null===(p=u.stroke)||void 0===p?void 0:p.curve)&&(a.stroke.curve="smooth"),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(a),a.xaxis=a.xaxis||window.Apex.xaxis||{},e||(a.xaxis.convertedCatToNumeric=!1),(null!==(f=(a=this.checkForCatToNumericXAxis(this.chartType,m,a)).chart.sparkline)&&void 0!==f&&f.enabled||null!==(b=window.Apex.chart)&&void 0!==b&&null!==(v=b.sparkline)&&void 0!==v&&v.enabled)&&(m=r.sparkline(m)),n=x.extend(o,m)}var y=x.extend(n,window.Apex);return o=x.extend(y,a),o=this.handleUserInputErrors(o)}},{key:"checkForCatToNumericXAxis",value:function(t,e,i){var a,s,r=new X(i),o=("bar"===t||"boxPlot"===t)&&(null===(a=i.plotOptions)||void 0===a||null===(s=a.bar)||void 0===s?void 0:s.horizontal),n="pie"===t||"polarArea"===t||"donut"===t||"radar"===t||"radialBar"===t||"heatmap"===t,l="datetime"!==i.xaxis.type&&"numeric"!==i.xaxis.type,h=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return o||n||!l||"between"===h||(i=r.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(t,e){var i=new L;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=x.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[x.extend(i.yAxis,t.yaxis)]:t.yaxis=x.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name="series-".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=x.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new L;return t.annotations.yaxis=x.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new L;return t.annotations.xaxis=x.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new L;return t.annotations.points=x.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.chart.background||(t.chart.background="#424242"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if("bar"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&"barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width="tickWidth"),"candlestick"!==e.chart.type&&"boxPlot"!==e.chart.type||e.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(e.chart.type," chart is not supported.")),e.yaxis[0].reversed=!1),e}}]),t}(),Y=function(){function t(){a(this,t)}return r(t,[{key:"initGlobalVars",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasXaxisGroups=!1,t.groups=[],t.hasSeriesGroups=!1,t.seriesGroups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0}},{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=x.extend({},t),e.initialSeries=x.clone(t.series),e.lastXAxis=x.clone(e.initialConfig.xaxis),e.lastYAxis=x.clone(e.initialConfig.yaxis),e}}]),t}(),F=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(){var t=new E(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new Y).init(t)}}}]),t}(),R=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return r(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");m.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:n+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,"href",o),m.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:n+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w,i=e.config.chart.type;return("bar"===i||"rangeBar"===i)&&e.config.plotOptions.bar.distributed||"heatmap"===i||"treemap"===i?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color),o||(o="#fff",console.warn("undefined color - ApexCharts"));var h=o;if(-1===o.indexOf("rgb")?o.length<9&&(h=x.hexToRgba(o,l)):o.indexOf("rgba")>-1&&(l=x.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),"pattern"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),"gradient"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),"image"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:"";this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(u=x.getOpacityFromRGBA(g));var p=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[r]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)n="dark"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var f=o.gradient.gradientToColors[l.seriesNumber];n=f,f.indexOf("rgba")>-1&&(p=x.getOpacityFromRGBA(f))}else n=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(n=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=n,n=b}return g.indexOf("rgb")>-1&&(g=x.rgb2hex(g)),n.indexOf("rgb")>-1&&(n=x.rgb2hex(n)),h.drawGradient(d,g,n,u,p,l.size,o.gradient.stops,o.gradient.colorStops,r)}}]),t}(),H=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new m(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(o.globals.cuid,")")),Array.isArray(l.x))for(var g=0;g0:o.config.markers.size>0)||r||d){x.isNumber(l.y[g])?p+=" w".concat(x.randomId()):p="apexcharts-nullpoint";var f=this.getMarkerConfig({cssClass:p,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(f.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(f.pointStrokeColor=o.config.series[n].data[u].strokeColor)),a&&(f.pSize=a),(l.x[g]<0||l.x[g]>o.globals.gridWidth||l.y[g]<-o.globals.markers.largestSize||l.y[g]>o.globals.gridHeight+o.globals.markers.largestSize)&&(f.pSize=0),(s=c.drawMarker(l.x[g],l.y[g],f)).attr("rel",u),s.attr("j",u),s.attr("index",e),s.node.setAttribute("default-marker-size",f.pSize),new v(this.ctx).setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:"getMarkerConfig",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.finishRadius,o=void 0===r?null:r,n=this.w,l=this.getMarkerStyle(i),h=n.globals.markers.size[i],c=n.config.markers;return null!==s&&c.discrete.length&&c.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(l.pointStrokeColor=t.strokeColor,l.pointFillColor=t.fillColor,h=t.size,l.pointShape=t.shape)})),{pSize:null===o?h:o,pRadius:c.radius,width:Array.isArray(c.width)?c.width[i]:c.width,height:Array.isArray(c.height)?c.height[i]:c.height,pointStrokeWidth:Array.isArray(c.strokeWidth)?c.strokeWidth[i]:c.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(c.shape)?c.shape[i]:c.shape),class:e,pointStrokeOpacity:Array.isArray(c.strokeOpacity)?c.strokeOpacity[i]:c.strokeOpacity,pointStrokeDashArray:Array.isArray(c.strokeDashArray)?c.strokeDashArray[i]:c.strokeDashArray,pointFillOpacity:Array.isArray(c.fillOpacity)?c.fillOpacity[i]:c.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(t){var e=this.w,i=new m(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),D=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return r(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new m(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(o.x))for(var c=0;cf.maxBubbleRadius&&(p=f.maxBubbleRadius)}a.config.chart.animations.enabled||(u=p);var x=o.x[c],b=o.y[c];if(u=u||0,null!==b&&void 0!==a.globals.series[r][d]||(g=!1),g){var v=this.drawPoint(x,b,u,p,r,d,e);h.add(v)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,a,s,r,o){var n=this.w,l=s,h=new b(this.ctx),c=new v(this.ctx),d=new R(this.ctx),g=new H(this.ctx),u=new m(this.ctx),p=g.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:l,dataPointIndex:r,finishRadius:"bubble"===n.config.chart.type||n.globals.comboCharts&&n.config.series[s]&&"bubble"===n.config.series[s].type?a:null});a=p.pSize;var f,x=d.fillPath({seriesNumber:s,dataPointIndex:r,color:p.pointFillColor,patternUnits:"objectBoundingBox",value:n.globals.series[s][o]});if("circle"===p.shape?f=u.drawCircle(i):"square"!==p.shape&&"rect"!==p.shape||(f=u.drawRect(0,0,p.width-p.pointStrokeWidth/2,p.height-p.pointStrokeWidth/2,p.pRadius)),n.config.series[l].data[r]&&n.config.series[l].data[r].fillColor&&(x=n.config.series[l].data[r].fillColor),f.attr({x:t-p.width/2-p.pointStrokeWidth/2,y:e-p.height/2-p.pointStrokeWidth/2,cx:t,cy:e,fill:x,"fill-opacity":p.pointFillOpacity,stroke:p.pointStrokeColor,r:a,"stroke-width":p.pointStrokeWidth,"stroke-dasharray":p.pointStrokeDashArray,"stroke-opacity":p.pointStrokeOpacity}),n.config.chart.dropShadow.enabled){var y=n.config.chart.dropShadow;c.dropShadow(f,y,s)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var w=n.config.chart.animations.speed;h.animateMarker(f,0,"circle"===p.shape?a:{width:p.width,height:p.height},w,n.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(f)}),100)}))}if(n.globals.dataChanged&&"circle"===p.shape)if(this.dynamicAnim){var k,A,S,C,L=n.config.chart.animations.dynamicAnimation.speed;null!=(C=n.globals.previousPaths[s]&&n.globals.previousPaths[s][o])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var P=0;Pn.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var p=n.globals.dataLabelsRects[a][u];(t>p.x+p.width||e>p.y+p.height||e+de.globals.gridWidth+f.textRects.width+30)&&(n="");var x=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(x=e.globals.dataLabels.style.colors[o]),"function"==typeof x&&(x=x({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(x=g);var b=d.offsetX,y=d.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(b=0,y=0),f.drawnextLabel){var w=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+b,y:s+y,foreColor:x,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||"normal"});if(w.attr({class:"apexcharts-datalabel",cx:a,cy:s}),d.dropShadow.enabled){var k=d.dropShadow;new v(this.ctx).dropShadow(w,k)}c.add(w),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}}}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new m(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,"transparent"===i.config.chart.background?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new v(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=x.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if("mousemove"===t.type){var s=parseInt(e.getAttribute("rel"),10)-1,r=null,o=null;i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),o=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var n=0;n=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[o])}else"mouseout"===t.type&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"asc",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r="asc"===t?0:s.length-1;"asc"===t?r=0;"asc"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return"bar"===t.type||"column"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute("data:realIndex")},o=0;o0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(e,"'] rect")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e("x")),y:parseFloat(e("y")),width:parseFloat(e("width")),height:parseFloat(e("height"))};a.push({rect:s,color:i[t].getAttribute("color")})},r=0;r0)for(var a=0;a0?t:[]}));return t}}]),t}(),W=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new y(this.ctx)}return r(t,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new N(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new N(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s="boxPlot"===i.chart.type||"boxPlot"===i.series[e].type,r=0;r=5?this.twoDSeries.push(x.parseNumber(t[e].data[r][4])):this.twoDSeries.push(x.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,s=this.w.config,r=this.w.globals,o=new I(a),n=s.labels.length>0?s.labels.slice():s.xaxis.categories.slice();if(r.isRangeBar="rangeBar"===s.chart.type&&r.isBarHorizontal,r.hasXaxisGroups="category"===s.xaxis.type&&s.xaxis.group.groups.length>0,r.hasXaxisGroups&&(r.groups=s.xaxis.group.groups),r.hasSeriesGroups=null===(e=t[0])||void 0===e?void 0:e.group,r.hasSeriesGroups){var l=[],h=u(new Set(t.map((function(t){return t.group}))));t.forEach((function(t,e){var i=h.indexOf(t.group);l[i]||(l[i]=[]),l[i].push(t.name)})),r.seriesGroups=l}for(var c=function(){for(var t=0;t0&&(this.twoDSeriesX=n,r.seriesX.push(this.twoDSeriesX))),r.labels.push(this.twoDSeriesX);var g=t[d].data.map((function(t){return x.parseNumber(t)}));r.series.push(g)}r.seriesZ.push(this.threeDSeries),void 0!==t[d].name?r.seriesNames.push(t[d].name):r.seriesNames.push("series-"+parseInt(d+1,10)),void 0!==t[d].color?r.seriesColors.push(t[d].color):r.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),e.xaxis.convertedCatToNumeric)new X(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?"":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new T(this.ctx),p=l;o&&(h=u.xLabelFormat(c,l,p,{i:a,dateFormatter:new I(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new I(this.ctx).formatDate,w:n})));var f,x;e.length>0?(f=e[a].unit,x=null,e.forEach((function(t){"month"===t.unit?x="year":"day"===t.unit?x="month":"hour"===t.unit?x="day":"minute"===t.unit&&(x="hour")})),g=x===f,i=e[a].position,h=e[a].value):"datetime"===n.config.xaxis.type&&void 0===d&&(h=""),void 0===h&&(h=""),h=Array.isArray(h)?h:h.toString();var b=new m(this.ctx),v={};v=n.globals.rotateXLabels&&o?b.getTextRects(h,parseInt(r,10),null,"rotate(".concat(n.config.xaxis.labels.rotate," 0 0)"),!1):b.getTextRects(h,parseInt(r,10));var y=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(0===h.indexOf("NaN")||0===h.toLowerCase().indexOf("invalid")||h.toLowerCase().indexOf("infinity")>=0||s.indexOf(h)>=0&&y)&&(h=""),{x:i,text:h,textRect:v,isBold:g}}},{key:"checkLabelBasedOnTickamount",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return"dataPoints"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=""),e}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.x0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=h+e/10+n.config.yaxis[s].labels.offsetY-1;n.globals.isBarHorizontal&&(d=r*c),"heatmap"===n.config.chart.type&&(d+=r/2);var g=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);o.add(g),h+=r}}}}]),t}(),G=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"scaleSvgNode",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,"width")),a=parseFloat(t.getAttributeNS(null,"height"));t.setAttributeNS(null,"width",i*e),t.setAttributeNS(null,"height",a*e),t.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(t){if(!x.isIE11())return t.replace(/ /g," ");var e=0,i=t.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,(function(t){return 2===++e?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':t}));return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(t){null==t&&(t=1);var e=this.w.globals.dom.Paper.svg();if(1!==t){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,t),e=(new XMLSerializer).serializeToString(i)}return this.fixSvgStringForIe11(e)}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,(function(t){t.setAttribute("width",0)})),e&&e[0]&&(e[0].setAttribute("x",-500),e[0].setAttribute("x1",-500),e[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o="transparent"===a.config.chart.background?"#fff":a.config.chart.background,n=r.getContext("2d");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s);var l=e.getSvgString(s);if(window.canvg&&x.isIE11()){var h=window.canvg.Canvg.fromString(n,l,{ignoreClear:!0,ignoreDimensions:!0});h.start();var c=r.msToBlob();h.stop(),i({blob:c})}else{var d="data:image/svg+xml,"+encodeURIComponent(l),g=new Image;g.crossOrigin="anonymous",g.onload=function(){if(n.drawImage(g,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL("image/png");i({imgURI:e})}},g.src=d}}))}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+".png"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,".png")}))}},{key:"exportToCSV",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?",":s,o=t.lineDelimiter,n=void 0===o?"\n":o,l=this.w;i||(i=l.config.series);var h,c,d=[],g=[],p="",f=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),b=function(t){return"datetime"===l.config.xaxis.type&&String(t).length>=10},v=Math.max.apply(Math,u(i.map((function(t){return t.data?t.data.length:0})))),m=new W(this.ctx),y=new B(this.ctx),w=function(t){var i="";if(l.globals.axisCharts){if("category"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new N(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=y.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;"datetime"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return Array.isArray(i)&&(i=i.join(" ")),x.isNumber(i)?i:i.split(r).join("")},k=function(t,e){if(d.length&&0===e&&g.push(d.join(r)),t.data){t.data=t.data.length&&t.data||u(Array(v)).map((function(){return""}));for(var a=0;a0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return r(t,[{key:"drawXaxis",value:function(){var t=this.w,e=new m(this.ctx),i=e.group({class:"apexcharts-xaxis",transform:"translate(".concat(t.config.xaxis.offsetX,", ").concat(t.config.xaxis.offsetY,")")}),a=e.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,p=l.xaxisForeColors||this.xaxisForeColors,f=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m="category"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/Math.min(y,v-1),b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&"top"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&"dataPoints"!==d.config.xaxis.tickAmount&&"datetime"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-("top"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:"middle",fontWeight:y.isBold?600:f,fontSize:g,fontFamily:u,foreColor:Array.isArray(p)?t&&d.config.xaxis.convertedCatToNumeric?p[d.globals.minX+s-1]:p[s]:p,isPlainText:!1,cssClass:(t?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+x});if(i.add(k),k.on("click",(function(t){if("function"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,"title");A.textContent=Array.isArray(y.text)?y.text.join(" "):y.text,k.node.appendChild(A),""!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,"top"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new m(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=i.globals.timescaleLabels.slice())}return r(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new m(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new m(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elForecastMask.setAttribute("id","forecastMask".concat(e.cuid)),e.dom.elNonForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(e.cuid));var r=t.config.chart.type,o=0,n=0;("bar"===r||"rangeBar"===r||"candlestick"===r||"boxPlot"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(o=t.config.grid.padding.left,n=t.config.grid.padding.right,e.barPadForNumericAxis>o&&(o=e.barPadForNumericAxis,n=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a-o-2,2*-a-2,e.gridWidth+a+n+o+4,e.gridHeight+4*a+4,0,"#fff");var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var h=e.dom.baseEl.querySelector("defs");h.appendChild(e.dom.elGridRectMask),h.appendChild(e.dom.elForecastMask),h.appendChild(e.dom.elNonForecastMask),h.appendChild(e.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||"radar"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasXaxisGroups&&"between"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d2));s++);if(!t.globals.isBarHorizontal||this.isRangeBar){var r,o,n;if(i=this.xaxisLabels.length,this.isRangeBar)i--,a=t.globals.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(i=t.config.xaxis.tickAmount),(null===(r=t.globals.yAxisScale)||void 0===r||null===(o=r[0])||void 0===o||null===(n=o.result)||void 0===n?void 0:n.length)>0&&"datetime"!==t.config.xaxis.type&&(i=t.globals.yAxisScale[0].result.length-1);this._drawXYLines({xCount:i,tickAmount:a})}else i=a,a=t.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a});return this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:t.globals.gridWidth/i}}},{key:"drawGridBands",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,o=0,n=0;o=i.config.grid.row.colors.length&&(n=0),this._drawGridBandRect({c:n,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||"on"!==i.config.xaxis.tickPlacement||"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,h=i.globals.padHorizontal,c=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,g=0,u=0;g=i.config.grid.column.colors.length&&(u=0),this._drawGridBandRect({c:u,x1:h,y1:0,x2:c,y2:d,type:"column"}),h+=i.globals.gridWidth/l}}]),t}(),_=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"niceScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,o=Math.abs(e-t);if("dataPoints"===(i=this._adjustTicksForSmallRange(i,a,o))&&(i=r.globals.dataPoints-1),t===Number.MIN_VALUE&&0===e||!x.isNumber(t)&&!x.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)return t=0,e=i,this.linearScale(t,e,i);t>e?(console.warn("axis.min cannot be greater than axis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var n=[];o<1&&s&&("candlestick"===r.config.chart.type||"candlestick"===r.config.series[a].type||"boxPlot"===r.config.chart.type||"boxPlot"===r.config.series[a].type||r.globals.isRangeData)&&(e*=1.01);var l=i+1;l<2?l=2:l>2&&(l-=2);var h=o/l,c=Math.floor(x.log10(h)),d=Math.pow(10,c),g=Math.round(h/d);g<1&&(g=1);var u=g*d;r.config.yaxis[a].stepSize&&(u=r.config.yaxis[a].stepSize),r.globals.isBarHorizontal&&r.config.xaxis.stepSize&&"datetime"!==r.config.xaxis.type&&(u=r.config.xaxis.stepSize);var p=u*Math.floor(t/u),f=u*Math.ceil(e/u),b=p;if(s&&o>2){for(;n.push(x.stripNumber(b,7)),!((b+=u)>f););return{result:n,niceMin:n[0],niceMax:n[n.length-1]}}var v=t;(n=[]).push(x.stripNumber(v,7));for(var m=Math.abs(e-t)/i,y=0;y<=i;y++)v+=m,n.push(v);return n[n.length-2]>=e&&n.pop(),{result:n,niceMin:n[0],niceMax:n[n.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(e-t);"dataPoints"===(i=this._adjustTicksForSmallRange(i,a,s))&&(i=this.w.globals.dataPoints-1);var r=s/i;i===Number.MAX_VALUE&&(i=10,r=1);for(var o=[],n=t;i>=0;)o.push(n),n+=r,i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"logarithmicScaleNice",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.logarithmicScale(e,i,r.logBase),a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase);else if(i!==-Number.MAX_VALUE&&x.isNumber(i))if(a.allSeriesCollapsed=!1,void 0===r.min&&void 0===r.max||r.forceNiceScale){var n=void 0===s.yaxis[t].max&&void 0===s.yaxis[t].min||s.yaxis[t].forceNiceScale;a.yAxisScale[t]=this.niceScale(e,i,r.tickAmount?r.tickAmount:o<5&&o>1?o+1:5,t,n)}else a.yAxisScale[t]=this.linearScale(e,i,r.tickAmount,t);else a.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(e-t);return e!==-Number.MAX_VALUE&&x.isNumber(e)?a.xAxisScale=this.linearScale(t,e,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,a=e.minYArr.concat([]),s=e.maxYArr.concat([]),r=[];i.yaxis.forEach((function(e,o){var n=o;i.series.forEach((function(t,i){t.name===e.seriesName&&(n=i,o!==i?r.push({index:i,similarIndex:o,alreadyExists:!0}):r.push({index:i}))}));var l=a[n],h=s[n];t.setYScaleForIndex(o,l,h)})),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var a=this,s=this.w.config,r=this.w.globals,o=[];i.forEach((function(t){t.alreadyExists&&(void 0===o[t.index]&&(o[t.index]=[]),o[t.index].push(t.index),o[t.index].push(t.similarIndex))})),r.yAxisSameScaleIndices=o,o.forEach((function(t,e){o.forEach((function(i,a){var s,r;e!==a&&(s=t,r=i,s.filter((function(t){return-1!==r.indexOf(t)}))).length>0&&(o[e]=o[e].concat(o[a]))}))}));var n=o.map((function(t){return t.filter((function(e,i){return t.indexOf(e)===i}))})).map((function(t){return t.sort()}));o=o.filter((function(t){return!!t}));var l=n.slice(),h=l.map((function(t){return JSON.stringify(t)}));l=l.filter((function(t,e){return h.indexOf(JSON.stringify(t))===e}));var c=[],d=[];t.forEach((function(t,i){l.forEach((function(a,s){a.indexOf(i)>-1&&(void 0===c[s]&&(c[s]=[],d[s]=[]),c[s].push({key:i,value:t}),d[s].push({key:i,value:e[i]}))}))}));var g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach((function(t,e){t.forEach((function(t,i){g[e]=Math.min(t.value,g[e])}))})),d.forEach((function(t,e){t.forEach((function(t,i){u[e]=Math.max(t.value,u[e])}))})),t.forEach((function(t,e){d.forEach((function(t,i){var o=g[i],n=u[i];s.chart.stacked&&(n=0,t.forEach((function(t,e){t.value!==-Number.MAX_VALUE&&(n+=t.value),o!==Number.MIN_VALUE&&(o+=c[i][e].value)}))),t.forEach((function(i,l){t[l].key===e&&(void 0!==s.yaxis[e].min&&(o="function"==typeof s.yaxis[e].min?s.yaxis[e].min(r.minY):s.yaxis[e].min),void 0!==s.yaxis[e].max&&(n="function"==typeof s.yaxis[e].max?s.yaxis[e].max(r.maxY):s.yaxis[e].max),a.setYScaleForIndex(e,o,n))}))}))}))}},{key:"autoScaleY",value:function(t,e,i){t||(t=this);var a=t.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis not supported in a multi-yaxis chart."),e;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return e.forEach((function(t,o){for(var n=0,l=0;l=i.xaxis.min){n=l;break}var h,c,d=a.globals.minYArr[o],g=a.globals.maxYArr[o],u=a.globals.stackedSeriesTotals;a.globals.series.forEach((function(o,l){var p=o[n];r?(p=u[n],h=c=p,u.forEach((function(t,e){s[e]<=i.xaxis.max&&s[e]>=i.xaxis.min&&(t>c&&null!==t&&(c=t),o[e]=i.xaxis.min){var r=t,o=t;a.globals.series.forEach((function(i,a){null!==t&&(r=Math.min(i[e],r),o=Math.max(i[e],o))})),o>c&&null!==o&&(c=o),rd&&(h=d),e.length>1?(e[l].min=void 0===t.min?h:t.min,e[l].max=void 0===t.max?c:t.max):(e[0].min=void 0===t.min?h:t.min,e[0].max=void 0===t.max?c:t.max)}))})),e}}]),t}(),U=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.scales=new _(e)}return r(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;"candlestick"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):"boxPlot"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);for(var d=t;dh[d][g]&&h[d][g]<0&&(n=h[d][g])):r.hasNullValues=!0}}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),"bar"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var a=0;a=0&&i<=10||void 0!==e.yaxis[0].min||void 0!==e.yaxis[0].max)&&(o=0),t.minY=i-5*o/100,i>0&&t.minY<0&&(t.minY=0),t.maxY=t.maxY+5*o/100}if(e.yaxis.forEach((function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.isMultipleYAxis?t.maxYArr[i]:t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.isMultipleYAxis?t.minYArr[i]===Number.MIN_VALUE?0:t.minYArr[i]:t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal){["min","max"].forEach((function(i){void 0!==e.xaxis[i]&&"number"==typeof e.xaxis[i]&&("min"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])}))}return t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach((function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax}))):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr,yAxisScale:t.yAxisScale}}},{key:"setXRange",value:function(){var t=this.w.globals,e=this.w.config,i="numeric"===e.xaxis.type||"datetime"===e.xaxis.type||"category"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;et.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):"dataPoints"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:"_setStackedMinMax",value:function(){var t=this,e=this.w.globals;if(e.series.length){var i=e.seriesGroups;i.length||(i=[this.w.config.series.map((function(t){return t.name}))]);var a={},s={};i.forEach((function(i){a[i]=[],s[i]=[],t.w.config.series.map((function(t,e){return i.indexOf(t.name)>-1?e:null})).filter((function(t){return null!==t})).forEach((function(r){for(var o=0;o0?a[i][o]+=parseFloat(e.series[r][o])+1e-4:s[i][o]+=parseFloat(e.series[r][o]))}}))})),Object.entries(a).forEach((function(t){var i=g(t,1)[0];a[i].forEach((function(t,r){e.maxY=Math.max(e.maxY,a[i][r]),e.minY=Math.min(e.minY,s[i][r])}))}))}}}]),t}(),q=function(){function t(e,i){a(this,t),this.ctx=e,this.elgrid=i,this.w=e.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xAxisoffX=0,"bottom"===s.config.xaxis.position&&(this.xAxisoffX=s.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new B(e)}return r(t,[{key:"drawYaxis",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.yaxis[t].labels.style,r=s.fontSize,o=s.fontFamily,n=s.fontWeight,l=a.group({class:"apexcharts-yaxis",rel:t,transform:"translate("+i.globals.translateYAxisX[t]+", 0)"});if(this.axesUtils.isYAxisHidden(t))return l;var h=a.group({class:"apexcharts-yaxis-texts-g"});l.add(h);var c=i.globals.yAxisScale[t].result.length-1,d=i.globals.gridHeight/c,g=i.globals.translateY,u=i.globals.yLabelFormatters[t],p=i.globals.yAxisScale[t].result.slice();p=this.axesUtils.checkForReversedLabels(t,p);var f="";if(i.config.yaxis[t].labels.show)for(var x=function(l){var x=p[l];x=u(x,l,i);var b=i.config.yaxis[t].labels.padding;i.config.yaxis[t].opposite&&0!==i.config.yaxis.length&&(b*=-1);var v="end";i.config.yaxis[t].opposite&&(v="start"),"left"===i.config.yaxis[t].labels.align?v="start":"center"===i.config.yaxis[t].labels.align?v="middle":"right"===i.config.yaxis[t].labels.align&&(v="end");var m=e.axesUtils.getYAxisForeColor(s.colors,t),y=i.config.yaxis[t].labels.offsetY;"heatmap"===i.config.chart.type&&(y-=(i.globals.gridHeight/i.globals.series.length-1)/2);var w=a.drawText({x:b,y:g+c/10+y+1,text:x,textAnchor:v,fontSize:r,fontFamily:o,fontWeight:n,maxWidth:i.config.yaxis[t].labels.maxWidth,foreColor:Array.isArray(m)?m[l]:m,isPlainText:!1,cssClass:"apexcharts-yaxis-label "+s.cssClass});l===c&&(f=w),h.add(w);var k=document.createElementNS(i.globals.SVGNS,"title");if(k.textContent=Array.isArray(x)?x.join(" "):x,w.node.appendChild(k),0!==i.config.yaxis[t].labels.rotate){var A=a.rotateAroundCenter(f.node),S=a.rotateAroundCenter(w.node);w.node.setAttribute("transform","rotate(".concat(i.config.yaxis[t].labels.rotate," ").concat(A.x," ").concat(S.y,")"))}g+=d},b=c;b>=0;b--)x(b);if(void 0!==i.config.yaxis[t].title.text){var v=a.group({class:"apexcharts-yaxis-title"}),y=0;i.config.yaxis[t].opposite&&(y=i.globals.translateYAxisX[t]);var w=a.drawText({x:y,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[t].title.offsetY,text:i.config.yaxis[t].title.text,textAnchor:"end",foreColor:i.config.yaxis[t].title.style.color,fontSize:i.config.yaxis[t].title.style.fontSize,fontWeight:i.config.yaxis[t].title.style.fontWeight,fontFamily:i.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[t].title.style.cssClass});v.add(w),l.add(v)}var k=i.config.yaxis[t].axisBorder,A=31+k.offsetX;if(i.config.yaxis[t].opposite&&(A=-31-k.offsetX),k.show){var S=a.drawLine(A,i.globals.translateY+k.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+k.offsetY+2,k.color,0,k.width);l.add(S)}return i.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,c,k,i.config.yaxis[t].axisTicks,t,d,l),l}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.timescaleLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),h=this.axesUtils.checkForReversedLabels(t,h);var d=c.length;if(e.config.xaxis.labels.show)for(var g=d?0:r;d?g=0;d?g++:g--){var u=h[g];u=l(u,g,e);var p=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var f=this.axesUtils.getLabel(h,c,p,g,this.drawnLabels,this.xaxisFontSize);p=f.x,u=f.text,this.drawnLabels.push(f.text),0===g&&e.globals.skipFirstTimelinelabel&&(u=""),g===h.length-1&&e.globals.skipLastTimelinelabel&&(u="")}var x=i.drawText({x:p,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});s.add(x),x.tspan(u);var b=document.createElementNS(e.globals.SVGNS,"title");b.textContent=u,x.node.appendChild(b),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new m(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new m(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new m(this.ctx),s={width:0,height:0},r={width:0,height:0},o=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==o&&(s=o.getBoundingClientRect());var n=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==n&&(r=n.getBoundingClientRect()),null!==n){var l=this.xPaddingForYAxisTitle(t,s,r,e);n.setAttribute("x",l.xPos-(e?10:0))}if(null!==n){var h=a.rotateAroundCenter(n);n.setAttribute("transform","rotate(".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,o=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:o,padd:0}:(a?(o=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2,0===(r+=1)&&(o-=n/2)):(o=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,o=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:o,padd:n})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(n,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o=o+c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(e=x.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&!a.floating&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));r=x.listToArray(r);var o=s.getBoundingClientRect();"left"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","start")})),a.opposite||s.setAttribute("transform","translate(-".concat(o.width,", 0)"))):"center"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","middle")})),s.setAttribute("transform","translate(".concat(o.width/2*(a.opposite?1:-1),", 0)"))):"right"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute("text-anchor","end")})),a.opposite&&s.setAttribute("transform","translate(".concat(o.width,", 0)")))}}))}}]),t}(),Z=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.documentEvent=x.bind(this.documentEvent,this)}return r(t,[{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=x.extend(C,i);this.w.globals.locale=a.options}}]),t}(),J=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawAxis",value:function(t,e){var i,a,s=this,r=this.w.globals,o=this.w.config,n=new V(this.ctx,e),l=new q(this.ctx,e);r.axisCharts&&"radar"!==t&&(r.isBarHorizontal?(a=l.drawYaxisInversed(0),i=n.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=n.drawXaxis(),r.dom.elGraphical.add(i),o.yaxis.map((function(t,e){if(-1===r.ignoreYAxisIndexes.indexOf(e)&&(a=l.drawYaxis(e),r.dom.Paper.add(a),"back"===s.w.config.grid.position)){var i=r.dom.Paper.children()[1];i.remove(),r.dom.Paper.add(i)}}))))}}]),t}(),Q=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=new v(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,p=s.blur,f=s.color,b=s.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===r&&(y=e.drawGradient("vertical",o,n,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine());var k=t.globals.gridHeight;(!x.isNumber(k)||k<0)&&(k=0);var A=t.config.xaxis.crosshairs.width;(!x.isNumber(A)||A<0)&&(A=0),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:k,width:A,height:k,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(w=i.dropShadow(w,{left:g,top:u,blur:p,color:f,opacity:b})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(r)}}]),t}(),K=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new E({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=y.extendArrayProps(r,i.globals.initialConfig,i);t=x.extend(n,t),t=x.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l0&&"function"==typeof i.config.colors[0]&&(i.globals.colors=i.config.series.map((function(t,a){var s=i.config.colors[a];return s||(s=i.config.colors[0]),"function"==typeof s?(e.isColorFn=!0,s({value:i.globals.axisCharts?i.globals.series[a][0]?i.globals.series[a][0]:0:i.globals.series[a],seriesIndex:a,dataPointIndex:a,w:i})):s})))),i.globals.seriesColors.map((function(t,e){t&&(i.globals.colors[e]=t)})),i.config.theme.monochrome.enabled){var s=[],r=i.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(r=i.globals.series[0].length*i.globals.series.length);for(var o=i.config.theme.monochrome.color,n=1/(r/i.config.theme.monochrome.shadeIntensity),l=i.config.theme.monochrome.shadeTo,h=0,c=0;c2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,u(a));i=e[a.indexOf(s)]}return i}}]),t}(),at=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=x.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new T(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new I(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new I(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(o=r="1");var h=new m(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var t,e=this.w;if(!e.globals.hasXaxisGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=x.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new m(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new m(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new m(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){s.yaxis.length>1&&function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)}(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c="right"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||"bar"!==s.chart.type&&"candlestick"!==s.chart.type&&"rangeBar"!==s.chart.type&&"boxPlot"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.right(null===(a=String(c(e,n)))||void 0===a?void 0:a.length)?t:e}),d),u=g=c(g,n);if(void 0!==g&&0!==g.length||(g=l.niceMax),e.globals.isBarHorizontal){a=0;var p=e.globals.labels.slice();g=x.getLargestStringFromArr(p),g=c(g,{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,p)}var f=new m(t.dCtx.ctx),b="rotate(".concat(r.labels.rotate," 0 0)"),v=f.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1),y=v;g!==u&&(y=f.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1)),i.push({width:(h>y.width||h>v.width?h:y.width>v.width?y.width:v.width)+a,height:y.height>v.height?y.height:v.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new m(t.dCtx.ctx),r="rotate(".concat(e.title.rotate," 0 0)"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new B(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),rt=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"gridPadForColumnsInNumericAxis",value:function(t){var e=this.w;if(e.globals.noData||e.globals.allSeriesCollapsed)return 0;var i=function(t){return"bar"===t||"rangeBar"===t||"candlestick"===t||"boxPlot"===t},a=e.config.chart.type,s=0,r=i(a)?e.config.series.length:1;if(e.globals.comboBarCount>0&&(r=e.globals.comboBarCount),e.globals.collapsedSeries.forEach((function(t){i(t.type)&&(r-=1)})),e.config.chart.stacked&&(r=1),(i(a)||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&r>0){var o,n,l=Math.abs(e.globals.initialMaxX-e.globals.initialMinX);l<=3&&(l=e.globals.dataPoints),o=l/t,e.globals.minXDiff&&e.globals.minXDiff/o>0&&(n=e.globals.minXDiff/o),n>t/2&&(n/=2),(s=n/r*parseInt(e.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,e.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;["title","subtitle"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5})),!e.config.legend.show||"bottom"!==e.config.legend.position||e.config.legend.floating||e.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new B(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new it(this),this.dimYAxis=new st(this),this.dimXAxis=new at(this),this.dimGrid=new rt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return r(t,[{key:"plotCoords",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=g(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),this.gridPad.top=Math.max(e.config.stroke.width/2,this.gridPad.top),this.gridPad.bottom=Math.max(e.config.stroke.width/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;("radar"===e.config.chart.type||this.isSparkline)&&(l=0,h=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||"treemap"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||"treemap"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l};switch("top"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=c,d();break;case"top":i.translateY=this.lgRect.height+c,d();break;case"left":i.translateY=c,i.translateX=this.lgRect.width+l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l;break;case"right":i.translateY=c,i.translateX=l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new q(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&"bottom"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),nt=function(){function t(e){a(this,t),this.w=e.w,this.lgCtx=e}return r(t,[{key:"getLegendStyles",value:function(){var t,e,i,a=document.createElement("style");a.setAttribute("type","text/css");var s=(null===(t=this.lgCtx.ctx)||void 0===t||null===(e=t.opts)||void 0===e||null===(i=e.chart)||void 0===i?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute("nonce",s);var r=document.createTextNode("\t\n \t\n .apexcharts-legend {\t\n display: flex;\t\n overflow: auto;\t\n padding: 0 10px;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\t\n flex-wrap: wrap\t\n }\t\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n flex-direction: column;\t\n bottom: 0;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n justify-content: flex-start;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\t\n justify-content: center; \t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\t\n justify-content: flex-end;\t\n }\t\n .apexcharts-legend-series {\t\n cursor: pointer;\t\n line-height: normal;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\t\n display: flex;\t\n align-items: center;\t\n }\t\n .apexcharts-legend-text {\t\n position: relative;\t\n font-size: 14px;\t\n }\t\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n pointer-events: none;\t\n }\t\n .apexcharts-legend-marker {\t\n position: relative;\t\n display: inline-block;\t\n cursor: pointer;\t\n margin-right: 3px;\t\n border-style: solid;\n }\t\n \t\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n display: inline-block;\t\n }\t\n .apexcharts-legend-series.apexcharts-no-click {\t\n cursor: auto;\t\n }\t\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n display: none !important;\t\n }\t\n .apexcharts-inactive-legend {\t\n opacity: 0.45;\t\n }");return a.appendChild(r),a}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"appendToForeignObject",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:"toggleDataSeries",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||"radialBar"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),n=a.config.chart.type;if("pie"===n||"polarArea"===n||"donut"===n){var l=a.config.plotOptions.pie.donut.labels;new m(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire("click")}}},{key:"hideSeries",value:function(t){var e=t.seriesEl,i=t.realIndex,a=this.w,s=x.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var o=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(o,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var n=e.childNodes,l=0;l0){for(var r=0;r-1&&(t[a].data=[])})):t.forEach((function(i,a){e.globals.collapsedSeriesIndices.indexOf(a)>-1&&(t[a]=0)})),t}}]),t}(),lt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed="bar"===this.w.config.chart.type&&this.w.config.plotOptions.bar.distributed&&1===this.w.config.series.length,this.legendHelpers=new nt(this)}return r(t,[{key:"init",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||this.isBarsDistributed||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),x.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.globals.colors.slice();if("heatmap"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+" - "+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h,c=o(a[l],{seriesIndex:l,w:e}),d=!1,g=!1;if(e.globals.collapsedSeries.length>0)for(var u=0;u0)for(var p=0;p0?l-10:0)+(h>0?h-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=o+"px","bottom"===i.config.legend.position?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px");["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.elLegendWrap.style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new ot(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;"bottom"===t.config.legend.position?r=-e.clwh/1.8:"top"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-series")||t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new N(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new N(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains("apexcharts-legend-series")||t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(t.target.getAttribute("rel"),10)-1,a="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;"function"==typeof r&&t.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),"treemap"!==e.config.chart.type&&"heatmap"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=i.globals.minX,this.maxX=i.globals.maxX}return r(t,[{key:"createToolbar",value:function(){var t=this,e=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=e.config.chart.toolbar.offsetY+"px",a.style.right=3-e.config.chart.toolbar.offsetX+"px",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\n \n \n\n'),o("zoomOut",this.elZoomOut,'\n \n \n\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:"zoom"===i?t.elZoom:t.elSelection,icon:"string"==typeof t.t[i]?t.t[i]:"zoom"===i?'\n \n \n \n':'\n \n \n',title:t.localeValues["zoom"===i?"selectionZoom":"selection"],class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(i,"-icon")})};n("zoom"),n("selection"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'\n \n \n \n \n \n \n \n',title:this.localeValues.pan,class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),o("reset",this.elZoomReset,'\n \n \n'),this.t.download&&r.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var l=0;l0&&e.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a=t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i;t.globals.isRangeBar&&(i=(t.config.chart.selection.xaxis.min-t.globals.yAxisScale[0].niceMin)/e.invertedYRatio,a=(t.config.chart.selection.xaxis.max-t.config.chart.selection.xaxis.min)/e.invertedYRatio);var s={x:i,y:0,width:a,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:"translate("+o+", "+l+")"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":h.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":h.config.chart.zoom.zoomedArea.stroke.opacity}),m.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,"fill-opacity":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,"stroke-width":h.config.chart.selection.stroke.width,"stroke-dasharray":h.config.chart.selection.stroke.dashArray,"stroke-opacity":h.config.chart.selection.stroke.opacity}),m.setAttrs(d.node,g))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g="x"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:"y"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging("resizing"),g}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;"resizing"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n("x"),y:n("y"),width:n("width"),height:n("height")};a.globals.selection=l,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t,e,o,n,l=i.gridRect.getBoundingClientRect(),h=r.node.getBoundingClientRect();a.globals.isRangeBar?(t=a.globals.yAxisScale[0].niceMin+(h.left-l.left)*s.invertedYRatio,e=a.globals.yAxisScale[0].niceMin+(h.right-l.left)*s.invertedYRatio,o=0,n=1):(t=a.globals.xAxisScale.niceMin+(h.left-l.left)*s.xRatio,e=a.globals.xAxisScale.niceMin+(h.right-l.left)*s.xRatio,o=a.globals.yAxisScale[0].niceMin+(l.bottom-h.bottom)*s.yRatio[0],n=a.globals.yAxisScale[0].niceMax-(h.top-l.top)*s.yRatio[0]);var c={xaxis:{min:t,max:e},yaxis:{min:o,max:n}};a.config.chart.events.selection(i.ctx,c),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,c)}),o))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=x.clone(a.globals.initialConfig.yaxis),p=x.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),"xy"!==i&&"x"!==i||(p={min:h,max:c}),"xy"!==i&&"y"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),a.config.chart.zoom.autoScaleYaxis){var f=new _(s.ctx);u=f.autoScaleY(s.ctx,u,{xaxis:p})}if(o){var b=o.getBeforeZoomRange(p,u);b&&(p=b.xaxis?b.xaxis:p,u=b.yaxis?b.yaxis:u)}var v={xaxis:p};a.config.chart.group||(v.yaxis=u),s.ctx.updateHelpers._updateOptions(v,!1,s.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof a.config.chart.events.zoomed&&o.zoomCallback(p,u)}else if(a.globals.selectionEnabled){var m,y=null;m={min:h,max:c},"xy"!==i&&"y"!==i||(y=x.clone(a.config.yaxis)).forEach((function(t,e){y[e].min=g[e],y[e].max=d[e]})),a.globals.selection=s.selection,"function"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:m,yaxis:y})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:"delayedPanScrolled",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;"left"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):"right"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=x.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),"left"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):"right"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=n);var l={min:t,max:e};i.config.chart.zoom.autoScaleYaxis&&(s=new _(this.ctx).autoScaleY(this.ctx,s,{xaxis:l}));var h={xaxis:{min:t,max:e}};i.config.chart.group||(h.yaxis=s),this.updateScrolledChart(h,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(ht),dt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return r(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var p=Math.round(g/h),f=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(p=Math.ceil(g/h),p-=1);var b=null,v=null,m=r.globals.seriesXvalues.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),y=r.globals.seriesYvalues.map((function(t){return t.filter((function(t){return x.isNumber(t)}))}));if(r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);b=(v=this.closestInMultiArray(k,A,m,y)).index,p=v.j,null!==b&&(m=r.globals.seriesXvalues[b],p=(v=this.closestInArray(k,m)).index)}return r.globals.capturedSeriesIndex=null===b?-1:b,(!p||p<1)&&(p=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=f:r.globals.capturedDataPointIndex=p,{capturedSeries:b,j:r.globals.isBarHorizontal?f:p,hoverX:g,hoverY:u}}},{key:"closestInMultiArray",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a<=h&&(h=a,n=i)}))})),-1!==n){var c=a[r][n],d=Math.abs(e-c);o=r,a.forEach((function(t,i){var a=Math.abs(e-t[n]);a<=d&&(d=a,o=i)}))}return{index:o,j:n}}},{key:"getFirstActiveXArray",value:function(t){for(var e=this.w,i=0,a=t.map((function(t,e){return t.length>0?e:-1})),s=0;s0)for(var a=0;a *")):this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *")}},{key:"getAllMarkers",value:function(){var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");(t=u(t)).sort((function(t,e){var i=Number(t.getAttribute("data:realIndex")),a=Number(e.getAttribute("data:realIndex"));return ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(".apexcharts-marker"))})),e}},{key:"hasMarkers",value:function(t){return this.getElMarkers(t).length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(i.attrs.name,""),e+="
".concat(i.val,"
")})),v.innerHTML=t+"",m.innerHTML=e+""};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML="",m.innerHTML=""):y()}else v.innerHTML="",m.innerHTML="";null!==p&&(a[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=l.config.tooltip.z.title,a[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=void 0!==p?p:"");if(o&&f[0]){if(l.config.tooltip.hideEmptySeries){var w=a[e].querySelector(".apexcharts-tooltip-marker"),k=a[e].querySelector(".apexcharts-tooltip-text");0==parseFloat(c)?(w.style.display="none",k.style.display="none"):(w.style.display="block",k.style.display="block")}null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1?f[0].parentNode.style.display="none":f[0].parentNode.style.display=l.config.tooltip.items.display}}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",o="",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&"treemap"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?r=new T(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new I(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(o)?o.join(" "):o,zVal:n}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),ut=function(){function t(e){a(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return r(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&m.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&m.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new m(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("apexcharts-active"),i.yaxisTTEls[t].style.top=s+"px",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid().getBoundingClientRect();(l=s.e.clientX-c.left)>a.globals.gridWidth/2&&(l-=s.tooltipRect.ttWidth),(h=s.e.clientY+a.globals.translateY-c.top)>a.globals.gridHeight/2&&(h-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY);isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=h+"px")}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r0&&(h.setAttribute("r",n),h.setAttribute("cx",i),h.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,n)}}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray;e=new N(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var n=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var l=i.tooltipUtil.getAllMarkers();if(null!==l)for(var h=0;h0?(l[h]&&l[h].setAttribute("r",n),l[h]&&l[h].setAttribute("cy",d)):l[h]&&l[h].setAttribute("r",0)}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,n)}},{key:"moveStickyTooltipOverBars",value:function(t,e){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new N(this.ctx).getActiveConfigSeriesIndex("desc")+1);var o=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"']"));o||"number"!=typeof e||(o=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"'],\n .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='").concat(e,"'] path[j='").concat(t,"']")));var n=o?parseFloat(o.getAttribute("cx")):0,l=o?parseFloat(o.getAttribute("cy")):0,h=o?parseFloat(o.getAttribute("barWidth")):0,c=a.getElGrid().getBoundingClientRect(),d=o&&(o.classList.contains("apexcharts-candlestick-area")||o.classList.contains("apexcharts-boxPlot-area"));i.globals.isXNumeric?(o&&!d&&(n-=s%2!=0?h/2:0),o&&d&&i.globals.comboCharts&&(n-=h/2)):i.globals.isBarHorizontal||(n=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(n)&&(n=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?l-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?l=a.e.clientY-c.top-a.tooltipRect.ttHeight/2:l+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(l=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(n),a.fixedTooltip||this.moveTooltip(n,l||i.globals.gridHeight)}}]),t}(),pt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ut(e)}return r(t,[{key:"drawDynamicPoints",value:function(){var t=this.w,e=new m(this.ctx),i=new H(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=u(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute("data:realIndex"))-parseFloat(e.getAttribute("data:realIndex"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),o=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var n=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-n.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),o=e.config.markers.hover.size,n=0;n=0?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}]),t}(),ft=function(){function t(e){a(this,t),this.w=e.w;var i=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!i.globals.isBarHorizontal&&"rangeBar"===i.config.chart.type&&i.config.plotOptions.bar.rangeBarGroupRows}return r(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTreeTooltip",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains("apexcharts-".concat(r,"-rect"))){var l=this.getAttr(e,"i"),h=this.getAttr(e,"j"),c=this.getAttr(e,"cx"),d=this.getAttr(e,"cy"),g=this.getAttr(e,"width"),u=this.getAttr(e,"height");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var p=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-p.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-p.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),c=parseInt(s.paths.getAttribute("cy"),10),d=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,l.intersect){var g=x.findAncestor(s.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),"mouseup"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.barHeight,u=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-o.tooltipRect.ttHeight);var p=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),f=r.globals.isMultipleYAxis?r.config.yaxis[p]&&r.config.yaxis[p].reversed:r.config.yaxis[0].reversed;if(h+o.tooltipRect.ttWidth>r.globals.gridWidth&&!f?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var x=o.getElGrid().getBoundingClientRect();c=o.e.clientY-x.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(f&&(h-=o.tooltipRect.ttWidth)<0&&(h=0),!f||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||(c=c+g-2*(r.globals.series[e][u]<0?g:0)),c=c+r.globals.translateY-o.tooltipRect.ttHeight/2,n.style.left=h+r.globals.translateX+"px",n.style.top=c+"px")}},{key:"getBarTooltipXY",value:function(t){var e=this,i=t.e,a=t.opt,s=this.w,r=null,o=this.ttCtx,n=0,l=0,h=0,c=0,d=0,g=i.target.classList;if(g.contains("apexcharts-bar-area")||g.contains("apexcharts-candlestick-area")||g.contains("apexcharts-boxPlot-area")||g.contains("apexcharts-rangebar-area")){var u=i.target,p=u.getBoundingClientRect(),f=a.elGrid.getBoundingClientRect(),x=p.height;d=p.height;var b=p.width,v=parseInt(u.getAttribute("cx"),10),m=parseInt(u.getAttribute("cy"),10);c=parseFloat(u.getAttribute("barWidth"));var y="touchmove"===i.type?i.touches[0].clientX:i.clientX;r=parseInt(u.getAttribute("j"),10),n=parseInt(u.parentNode.getAttribute("rel"),10)-1;var w=u.getAttribute("data-range-y1"),k=u.getAttribute("data-range-y2");s.globals.comboCharts&&(n=parseInt(u.parentNode.getAttribute("data:realIndex"),10));var A=function(t){return s.globals.isXNumeric?v-b/2:e.isVerticalGroupedRangeBar?v+b/2:v-o.dataPointsDividedWidth+b/2},S=function(){return m-o.dataPointsDividedHeight+x/2-o.tooltipRect.ttHeight/2};o.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:n,j:r,y1:w?parseInt(w,10):null,y2:k?parseInt(k,10):null,shared:!o.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(l=y-f.left+15,h=S()):(l=A(),h=i.clientY-f.top-o.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((l=v)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[t];if(a.yaxisTooltips[t]){var o=a.getElGrid().getBoundingClientRect(),n=(e-o.top)*i.yRatio[t],l=s.globals.maxYArr[t]-s.globals.minYArr[t],h=s.globals.minYArr[t]+(l-n);a.tooltipPosition.moveYCrosshairs(e-o.top),a.yaxisTooltipText[t].innerHTML=r(h),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.tConfig=i.config.tooltip,this.tooltipUtil=new dt(this),this.tooltipLabels=new gt(this),this.tooltipPosition=new ut(this),this.marker=new pt(this),this.intersect=new ft(this),this.axesTooltip=new xt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!i.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return r(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new V(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&"rangeBar"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement("div");o.classList.add("apexcharts-tooltip-series-group"),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1,e.tConfig.shared&&e.tConfig.enabledOnSeries&&Array.isArray(e.tConfig.enabledOnSeries)&&e.tConfig.enabledOnSeries.indexOf(r)<0&&o.classList.add("apexcharts-tooltip-series-group-hidden");var n=document.createElement("span");n.classList.add("apexcharts-tooltip-marker"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement("div");l.classList.add("apexcharts-tooltip-text"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,["y","goals","z"].forEach((function(t){var e=document.createElement("div");e.classList.add("apexcharts-tooltip-".concat(t,"-group"));var i=document.createElement("span");i.classList.add("apexcharts-tooltip-text-".concat(t,"-label")),e.appendChild(i);var a=document.createElement("span");a.classList.add("apexcharts-tooltip-text-".concat(t,"-value")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf("bottom")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=o+"px",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:"seriesHover",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip();if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new N(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:"axisChartsTooltips",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n="touchmove"===a.type?a.touches[0].clientX:a.clientX,l="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if("mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add("apexcharts-active");var u=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&u.length&&this.ycrosshairs.classList.add("apexcharts-active"),g&&!this.showOnIntersect)this.handleStickyTooltip(a,n,l,s);else if("heatmap"===r.config.chart.type||"treemap"===r.config.chart.type){var p=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=p.x,i=p.y,c.style.left=e+"px",c.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var f=0;fl.width)this.handleMouseOut(a);else if(null!==n)this.handleStickyCapturedSeries(t,n,a,o);else if(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal){var h=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,h,o,a.ttItems)}}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);if(void 0!==s.globals.series[e][a])this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,r,a,i.ttItems)}}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new m(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,S=this.w,C=i;"mouseup"===t.type&&this.markerClick(t,a,s),null===A&&(A=this.tConfig.shared);var L=this.tooltipUtil.hasMarkers(a),P=this.tooltipUtil.getElBars();if(S.config.legend.tooltipHoverFormatter){var I=S.config.legend.tooltipHoverFormatter,T=Array.from(this.legendLabels);T.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var M=0;M0?C.marker.enlargePoints(s):C.tooltipPosition.moveDynamicPointsOnHover(s);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(P),this.barSeriesHeight>0)){var R=new m(this.ctx),H=S.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(s,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(s,a);for(var D=0;D0&&a.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(u-=c*A)),k){u=u+g.height/2-v/2-2}var C=this.barCtx.series[s][r]<0,L=l;switch(this.barCtx.isReversed&&(L=l-d+(C?2*d:0),l-=d),x.position){case"center":p=k?C?L-d/2+w:L+d/2-w:C?L-d/2+g.height/2+w:L+d/2+g.height/2-w;break;case"bottom":p=k?C?L-d+w:L+d-w:C?L-d+g.height+v+w:L+d-g.height/2+v-w;break;case"top":p=k?C?L+w:L-w:C?L-g.height/2-w:L+g.height+w}if(this.barCtx.lastActiveBarSerieIndex===o&&b.enabled){var P=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:o,j:r}),f.fontSize);e=C?L-P.height/2-w-b.offsetY+18:L+P.height+w+b.offsetY-18,i=u+b.offsetX}return a.config.chart.stacked||(p<0?p=0+v:p+g.height/3>a.globals.gridHeight&&(p=a.globals.gridHeight-v)),{bcx:h,bcy:l,dataLabelsX:u,dataLabelsY:p,totalDataLabelsX:i,totalDataLabelsY:e,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.groupIndex,n=t.bcy,l=t.barHeight,h=t.barWidth,c=t.textRects,d=t.dataLabelsX,g=t.strokeWidth,u=t.dataLabelsConfig,p=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,x=t.offX,b=t.offY,v=e.globals.gridHeight/e.globals.dataPoints;h=Math.abs(h);var y,w,k=(n+=-1!==o?o*l:0)-(this.barCtx.isRangeBar?0:v)+l/2+c.height/2+b-3,A="start",S=this.barCtx.series[a][s]<0,C=i;switch(this.barCtx.isReversed&&(C=i+h-(S?2*h:0),i=e.globals.gridWidth-h),p.position){case"center":d=S?C+h/2-x:Math.max(c.width/2,C-h/2)+x;break;case"bottom":d=S?C+h-g-Math.round(c.width/2)-x:C-h+g+Math.round(c.width/2)+x;break;case"top":d=S?C-g+Math.round(c.width/2)-x:C-g-Math.round(c.width/2)+x}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var L=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),u.fontSize);S?(y=C-g+Math.round(L.width/2)-x-f.offsetX-15,A="end"):y=C-g-Math.round(L.width/2)+x+f.offsetX+15,w=k+f.offsetY}return e.config.chart.stacked||(d<0?d=d+c.width+g:d+c.width/2>e.globals.gridWidth&&(d=e.globals.gridWidth-c.width-g)),{bcx:i,bcy:n,dataLabelsX:d,dataLabelsY:k,totalDataLabelsX:y,totalDataLabelsY:w,totalDataLabelsAnchor:A}}},{key:"drawCalculatedDataLabels",value:function(t){var i=t.x,a=t.y,s=t.val,r=t.i,o=t.j,n=t.textRects,l=t.barHeight,h=t.barWidth,c=t.dataLabelsConfig,d=this.w,g="rotate(0)";"vertical"===d.config.plotOptions.bar.dataLabels.orientation&&(g="rotate(-90, ".concat(i,", ").concat(a,")"));var u=new O(this.barCtx.ctx),p=new m(this.barCtx.ctx),f=c.formatter,x=null,b=d.globals.collapsedSeriesIndices.indexOf(r)>-1;if(c.enabled&&!b){x=p.group({class:"apexcharts-data-labels",transform:g});var v="";void 0!==s&&(v=f(s,e(e({},d),{},{seriesIndex:r,dataPointIndex:o,w:d}))),!s&&d.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(v="");var y=d.globals.series[r][o]<0,w=d.config.plotOptions.bar.dataLabels.position;if("vertical"===d.config.plotOptions.bar.dataLabels.orientation&&("top"===w&&(c.textAnchor=y?"end":"start"),"center"===w&&(c.textAnchor="middle"),"bottom"===w&&(c.textAnchor=y?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)hMath.abs(h)&&(v=""):n.height/1.6>Math.abs(l)&&(v=""));var k=e({},c);this.barCtx.isHorizontal&&s<0&&("start"===c.textAnchor?k.textAnchor="end":"end"===c.textAnchor&&(k.textAnchor="start")),u.plotDataLabelsText({x:i,y:a,text:v,i:r,j:o,parent:x,dataLabelsConfig:k,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:"drawTotalDataLabels",value:function(t){var e,i=t.x,a=t.y,s=t.val,r=t.barWidth,o=t.barHeight,n=t.realIndex,l=t.textAnchor,h=t.barTotalDataLabelsConfig,c=this.w,d=new m(this.barCtx.ctx);return h.enabled&&void 0!==i&&void 0!==a&&this.barCtx.lastActiveBarSerieIndex===n&&(e=d.drawText({x:i-(!c.globals.isBarHorizontal&&c.globals.seriesGroups.length?r/c.globals.seriesGroups.length:0),y:a-(c.globals.isBarHorizontal&&c.globals.seriesGroups.length?o/c.globals.seriesGroups.length:0),foreColor:h.style.color,text:s,textAnchor:l,fontFamily:h.style.fontFamily,fontSize:h.style.fontSize,fontWeight:h.style.fontWeight})),e}}]),t}(),mt=function(){function t(e){a(this,t),this.w=e.w,this.barCtx=e}return r(t,[{key:"initVariables",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/c*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}-1===String(this.barCtx.barOptions.columnWidth).indexOf("%")&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return l.globals.barHeight=s,l.globals.barWidth=r,{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:"initializeStackedPrevVars",value:function(t){var e=t.w;e.globals.hasSeriesGroups?e.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]})):(t.prevY=[],t.prevX=[],t.prevYF=[],t.prevXF=[],t.prevYVal=[],t.prevXVal=[])}},{key:"initializeStackedXYVars",value:function(t){var e=t.w;e.globals.hasSeriesGroups?e.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]})):(t.xArrj=[],t.xArrjF=[],t.xArrjVal=[],t.yArrj=[],t.yArrjF=[],t.yArrjVal=[])}},{key:"getPathFillColor",value:function(t,e,i,a){var s,r,o,n,l=this.w,h=new R(this.barCtx.ctx),c=null,d=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color)}));return l.config.series[e].data[i]&&l.config.series[e].data[i].fillColor&&(c=l.config.series[e].data[i].fillColor),h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(o=r.fill)&&void 0!==o&&o.type?null===(n=l.config.series[e].data[i])||void 0===n?void 0:n.fill.type:Array.isArray(l.config.fill.type)?l.config.fill.type[e]:l.config.fill.type})}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return this.barCtx.series[t][e]?this.barCtx.isNullValue=!1:this.barCtx.isNullValue=!0,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(t){var e=this.w,i=!1;return e.config.plotOptions.bar.borderRadius>0&&(e.config.chart.stacked&&"last"===e.config.plotOptions.bar.borderRadiusWhenStacked?this.barCtx.lastActiveBarSerieIndex===t&&(i=!0):i=!0),i}},{key:"barBackground",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new m(this.barCtx.ctx),c=new N(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.seriesGroup,l=t.realIndex,h=t.i,c=t.j,d=t.w,g=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[l]:o)||(o=0);var u=i,p=a;null!==(e=d.config.series[l].data[c])&&void 0!==e&&e.columnWidthOffset&&(p=a-d.config.series[l].data[c].columnWidthOffset/2,u=i+d.config.series[l].data[c].columnWidthOffset);var f=p,x=p+u;s+=.001,r+=.001;var b=g.move(f,s),v=g.move(f,s),y=g.line(x-o,s);if(d.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(l,c,!1)),b=b+g.line(f,r)+g.line(x-o,r)+g.line(x-o,s)+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),v=v+g.line(f,s)+y+y+y+y+y+g.line(f,s)+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(l)&&(b=g.roundPathCorners(b,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked){var w=this.barCtx;d.globals.hasSeriesGroups&&n&&(w=this.barCtx[n]),w.yArrj.push(r),w.yArrjF.push(Math.abs(s-r)),w.yArrjVal.push(this.barCtx.series[h][c])}return{pathTo:b,pathFrom:v}}},{key:"getBarpaths",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.seriesGroup,l=t.realIndex,h=t.i,c=t.j,d=t.w,g=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[l]:o)||(o=0);var u=i,p=a;null!==(e=d.config.series[l].data[c])&&void 0!==e&&e.barHeightOffset&&(u=i-d.config.series[l].data[c].barHeightOffset/2,p=a+d.config.series[l].data[c].barHeightOffset);var f=u,x=u+p;s+=.001,r+=.001;var b=g.move(s,f),v=g.move(s,f);d.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(l,c,!1));var y=g.line(s,x-o);if(b=b+g.line(r,f)+g.line(r,x-o)+y+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),v=v+g.line(s,f)+y+y+y+y+y+g.line(s,f)+("around"===d.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(l)&&(b=g.roundPathCorners(b,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked){var w=this.barCtx;d.globals.hasSeriesGroups&&n&&(w=this.barCtx[n]),w.xArrj.push(r),w.xArrjF.push(Math.abs(s-r)),w.xArrjVal.push(this.barCtx.series[h][c])}return{pathTo:b,pathFrom:v}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,a=0;a2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),i}},{key:"getYForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e-t/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),i}},{key:"getGoalValues",value:function(t,i,a,s,r){var n=this,l=this.w,h=[],c=function(e,s){var r;h.push((o(r={},t,"x"===t?n.getXForValue(e,i,!1):n.getYForValue(e,a,!1)),o(r,"attrs",s),r))};if(l.globals.seriesGoals[s]&&l.globals.seriesGoals[s][r]&&Array.isArray(l.globals.seriesGoals[s][r])&&l.globals.seriesGoals[s][r].forEach((function(t){c(t.value,t)})),this.barCtx.barOptions.isDumbbell&&l.globals.seriesRange.length){var d=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:l.globals.colors,g={strokeHeight:"x"===t?0:l.globals.markers.size[s],strokeWidth:"x"===t?l.globals.markers.size[s]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(d[s])?d[s][0]:d[s]};c(l.globals.seriesRangeStart[s][r],g),c(l.globals.seriesRangeEnd[s][r],e(e({},g),{},{strokeColor:Array.isArray(d[s])?d[s][1]:d[s]}))}return h}},{key:"drawGoalLine",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new m(this.barCtx.ctx),l=n.group({className:"apexcharts-bar-goals-groups"});l.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr("clip-path","url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid,")"));var h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)})):Array.isArray(s)&&s.forEach((function(t){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)})),l}},{key:"drawBarShadow",value:function(t){var e=t.prevPaths,i=t.currPaths,a=t.color,s=this.w,r=e.x,o=e.x1,n=e.barYPosition,l=i.x,h=i.x1,c=i.barYPosition,d=n+i.barHeight,g=new m(this.barCtx.ctx),u=new x,p=g.move(o,d)+g.line(r,d)+g.line(l,c)+g.line(h,c)+g.line(o,d)+("around"===s.config.plotOptions.bar.borderRadiusApplication?" Z":" z");return g.drawPath({d:p,fill:u.shadeColor(.5,x.rgb2hex(a)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadows"})}},{key:"getZeroValueEncounters",value:function(t){var e=t.i,i=t.j,a=this.w,s=0,r=0;return a.globals.seriesPercent.forEach((function(t,a){t[i]&&s++,athis.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(var n=0,l=0;n0&&(this.visibleI=this.visibleI+1);var k=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=v),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed;var S=this.barHelpers.initialPositions();p=S.y,k=S.barHeight,c=S.yDivision,g=S.zeroW,u=S.x,A=S.barWidth,h=S.xDivision,d=S.zeroH,this.horizontal||b.push(u+A/2);var C=s.group({class:"apexcharts-datalabels","data:realIndex":v});a.globals.delayedElements.push({el:C.node}),C.node.classList.add("apexcharts-element-hidden");var L=s.group({class:"apexcharts-bar-goals-markers"}),P=s.group({class:"apexcharts-bar-shadows"});a.globals.delayedElements.push({el:P.node}),P.node.classList.add("apexcharts-element-hidden");for(var I=0;I0){var E=this.barHelpers.drawBarShadow({color:"string"==typeof X&&-1===(null==X?void 0:X.indexOf("url"))?X:x.hexToRgba(a.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:M});E&&P.add(E)}this.pathArr.push(M);var Y=this.barHelpers.drawGoalLine({barXPosition:M.barXPosition,barYPosition:M.barYPosition,goalX:M.goalX,goalY:M.goalY,barHeight:k,barWidth:A});Y&&L.add(Y),p=M.y,u=M.x,I>0&&b.push(u+A/2),f.push(p),this.renderSeries({realIndex:v,pathFill:X,j:I,i:n,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:T,elSeries:w,x:u,y:p,series:t,barHeight:M.barHeight?M.barHeight:k,barWidth:M.barWidth?M.barWidth:A,elDataLabelsWrap:C,elGoalsMarkers:L,elBarShadows:P,visibleSeries:this.visibleI,type:"bar"})}a.globals.seriesXvalues[v]=b,a.globals.seriesYvalues[v]=f,o.add(w)}return o}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.groupIndex,n=t.pathFrom,l=t.pathTo,h=t.strokeWidth,c=t.elSeries,d=t.x,g=t.y,u=t.y1,p=t.y2,f=t.series,x=t.barHeight,b=t.barWidth,y=t.barXPosition,w=t.barYPosition,k=t.elDataLabelsWrap,A=t.elGoalsMarkers,S=t.elBarShadows,C=t.visibleSeries,L=t.type,P=this.w,I=new m(this.ctx);a||(a=this.barOptions.distributed?P.globals.stroke.colors[s]:P.globals.stroke.colors[e]),P.config.series[r].data[s]&&P.config.series[r].data[s].strokeColor&&(a=P.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var T=s/P.config.chart.animations.animateGradually.delay*(P.config.chart.animations.speed/P.globals.dataPoints)/2.4,M=I.renderPaths({i:r,j:s,realIndex:e,pathFrom:n,pathTo:l,stroke:a,strokeWidth:h,strokeLineCap:P.config.stroke.lineCap,fill:i,animationDelay:T,initialSpeed:P.config.chart.animations.speed,dataChangeSpeed:P.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(L,"-area")});M.attr("clip-path","url(#gridRectMask".concat(P.globals.cuid,")"));var z=P.config.forecastDataPoints;z.count>0&&s>=P.globals.dataPoints-z.count&&(M.node.setAttribute("stroke-dasharray",z.dashArray),M.node.setAttribute("stroke-width",z.strokeWidth),M.node.setAttribute("fill-opacity",z.fillOpacity)),void 0!==u&&void 0!==p&&(M.attr("data-range-y1",u),M.attr("data-range-y2",p)),new v(this.ctx).setSelectionFilter(M,e,s),c.add(M);var X=new vt(this).handleBarDataLabels({x:d,y:g,y1:u,y2:p,i:r,j:s,series:f,realIndex:e,groupIndex:o,barHeight:x,barWidth:b,barXPosition:y,barYPosition:w,renderedPath:M,visibleSeries:C});return null!==X.dataLabels&&k.add(X.dataLabels),X.totalDataLabels&&k.add(X.totalDataLabels),c.add(k),A&&c.add(A),S&&c.add(S),c}},{key:"drawBarPaths",value:function(t){var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=i.i,g=i.j;if(c.globals.isXNumeric)e=(n=(c.globals.seriesX[d][g]-c.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var u=0,p=0;c.globals.seriesPercent.forEach((function(t,e){t[g]&&u++,e0&&(a=this.seriesLen*a/u),e=n+a*this.visibleI,e-=a*p}else e=n+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[d][g],r)-r)/2),o=this.barHelpers.getXForValue(this.series[d][g],r);var f=this.barHelpers.getBarpaths({barYPosition:e,barHeight:a,x1:r,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:d,j:g,w:c});return c.globals.isXNumeric||(n+=l),this.barHelpers.barBackground({j:g,i:d,y1:e-a*this.visibleI,y2:a*this.seriesLen,elSeries:h}),{pathTo:f.pathTo,pathFrom:f.pathFrom,x1:r,x:o,y:n,goalX:this.barHelpers.getGoalValues("x",r,null,d,g),barYPosition:e,barHeight:a}}},{key:"drawColumnPaths",value:function(t){var e,i=t.indexes,a=t.x,s=t.y,r=t.xDivision,o=t.barWidth,n=t.zeroH,l=t.strokeWidth,h=t.elSeries,c=this.w,d=i.realIndex,g=i.i,u=i.j,p=i.bc;if(c.globals.isXNumeric){var f=this.getBarXForNumericXAxis({x:a,j:u,realIndex:d,barWidth:o});a=f.x,e=f.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var x=this.barHelpers.getZeroValueEncounters({i:g,j:u}),b=x.nonZeroColumns,v=x.zeroEncounters;b>0&&(o=this.seriesLen*o/b),e=a+o*this.visibleI,e-=o*v}else e=a+o*this.visibleI;s=this.barHelpers.getYForValue(this.series[g][u],n);var m=this.barHelpers.getColumnPaths({barXPosition:e,barWidth:o,y1:n,y2:s,strokeWidth:l,series:this.series,realIndex:i.realIndex,i:g,j:u,w:c});return c.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:p,j:u,i:g,x1:e-l/2-o*this.visibleI,x2:o*this.seriesLen+l/2,elSeries:h}),{pathTo:m.pathTo,pathFrom:m.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues("y",null,n,g,u),barXPosition:e,barWidth:o}}},{key:"getBarXForNumericXAxis",value:function(t){var e=t.x,i=t.barWidth,a=t.realIndex,s=t.j,r=this.w,o=a;return r.globals.seriesX[a].length||(o=r.globals.maxValsInArrayIndex),r.globals.seriesX[o][s]&&(e=(r.globals.seriesX[o][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:e+i*this.visibleI,x:e}}},{key:"getPreviousPath",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),wt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w;this.graphics=new m(this.ctx),this.bar=new yt(this.ctx,this.xyRatios);var r=new y(this.ctx,s);t=r.getLogSeries(t),this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),"100%"===s.config.chart.stackType&&(t=s.globals.seriesPercent.slice()),this.series=t,this.barHelpers.initializeStackedPrevVars(this);for(var o=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),n=0,l=0,h=function(r,h){var c=void 0,d=void 0,g=void 0,u=void 0,p=-1;a.groupCtx=a,s.globals.seriesGroups.forEach((function(t,e){t.indexOf(s.config.series[r].name)>-1&&(p=e)})),-1!==p&&(a.groupCtx=a[s.globals.seriesGroups[p]]);var f=[],b=[],v=s.globals.comboCharts?i[r]:r;a.yRatio.length>1&&(a.yaxisIndex=v),a.isReversed=s.config.yaxis[a.yaxisIndex]&&s.config.yaxis[a.yaxisIndex].reversed;var m=a.graphics.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[v]),rel:r+1,"data:realIndex":v});a.ctx.series.addCollapsedClassToSeries(m,v);var y=a.graphics.group({class:"apexcharts-datalabels","data:realIndex":v}),w=a.graphics.group({class:"apexcharts-bar-goals-markers"}),k=0,A=0,S=a.initialPositions(n,l,c,d,g,u);l=S.y,k=S.barHeight,d=S.yDivision,u=S.zeroW,n=S.x,A=S.barWidth,c=S.xDivision,g=S.zeroH,s.globals.barHeight=k,s.globals.barWidth=A,a.barHelpers.initializeStackedXYVars(a),1===a.groupCtx.prevY.length&&a.groupCtx.prevY[0].every((function(t){return isNaN(t)}))&&(a.groupCtx.prevY[0]=a.groupCtx.prevY[0].map((function(t){return g})),a.groupCtx.prevYF[0]=a.groupCtx.prevYF[0].map((function(t){return 0})));for(var C=0;C1?(i=c.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:h*parseInt(c.config.plotOptions.bar.columnWidth,10)/100,-1===String(c.config.plotOptions.bar.columnWidth).indexOf("%")&&(h=parseInt(c.config.plotOptions.bar.columnWidth,10)),s=c.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?c.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=c.globals.padHorizontal+(i-h)/2),{x:t,y:e,yDivision:a,xDivision:i,barHeight:null!==(o=c.globals.seriesGroups)&&void 0!==o&&o.length?l/c.globals.seriesGroups.length:l,barWidth:null!==(n=c.globals.seriesGroups)&&void 0!==n&&n.length?h/c.globals.seriesGroups.length:h,zeroH:s,zeroW:r}}},{key:"drawStackedBarPaths",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.groupIndex,h=t.seriesGroup,c=t.yDivision,d=t.elSeries,g=this.w,u=n+(-1!==l?l*a:0),p=i.i,f=i.j,x=0,b=0;b0){var m=r;this.groupCtx.prevXVal[v-1][f]<0?m=this.series[p][f]>=0?this.groupCtx.prevX[v-1][f]+x-2*(this.isReversed?x:0):this.groupCtx.prevX[v-1][f]:this.groupCtx.prevXVal[v-1][f]>=0&&(m=this.series[p][f]>=0?this.groupCtx.prevX[v-1][f]:this.groupCtx.prevX[v-1][f]-x+2*(this.isReversed?x:0)),e=m}else e=r;o=null===this.series[p][f]?e:e+this.series[p][f]/this.invertedYRatio-2*(this.isReversed?this.series[p][f]/this.invertedYRatio:0);var y=this.barHelpers.getBarpaths({barYPosition:u,barHeight:a,x1:e,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,seriesGroup:h,i:p,j:f,w:g});return this.barHelpers.barBackground({j:f,i:p,y1:u,y2:a,elSeries:d}),n+=c,{pathTo:y.pathTo,pathFrom:y.pathFrom,goalX:this.barHelpers.getGoalValues("x",r,null,p,f),barYPosition:u,x:o,y:n}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.groupIndex,l=t.seriesGroup,h=t.elSeries,c=this.w,d=e.i,g=e.j,u=e.bc;if(c.globals.isXNumeric){var p=c.globals.seriesX[d][g];p||(p=0),i=(p-c.globals.minX)/this.xRatio-r/2,c.globals.seriesGroups.length&&(i=(p-c.globals.minX)/this.xRatio-r/2*c.globals.seriesGroups.length)}for(var f,x=i+(-1!==n?n*r:0),b=0,v=0;v0&&!c.globals.isXNumeric||m>0&&c.globals.isXNumeric&&c.globals.seriesX[d-1][g]===c.globals.seriesX[d][g]){var y,w,k,A=Math.min(this.yRatio.length+1,d+1);if(void 0!==this.groupCtx.prevY[m-1]&&this.groupCtx.prevY[m-1].length)for(var S=1;S=0?k-b+2*(this.isReversed?b:0):k;break}if((null===(I=this.groupCtx.prevYVal[m-L])||void 0===I?void 0:I[g])>=0){w=this.series[d][g]>=0?k:k+b-2*(this.isReversed?b:0);break}}void 0===w&&(w=c.globals.gridHeight),f=null!==(y=this.groupCtx.prevYF[0])&&void 0!==y&&y.every((function(t){return 0===t}))&&this.groupCtx.prevYF.slice(1,m).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:w}else f=o;a=this.series[d][g]?f-this.series[d][g]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[d][g]/this.yRatio[this.yaxisIndex]:0):f;var T=this.barHelpers.getColumnPaths({barXPosition:x,barWidth:r,y1:f,y2:a,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:d,j:g,w:c});return this.barHelpers.barBackground({bc:u,j:g,i:d,x1:x,x2:r,elSeries:h}),i+=s,{pathTo:T.pathTo,pathFrom:T.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,o,d,g),barXPosition:x,x:c.globals.isXNumeric?i-s:i,y:a}}}]),s}(yt),kt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i,a){var s=this,r=this.w,o=new m(this.ctx),n=r.globals.comboCharts?i:r.config.chart.type,l=new R(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=r.config.plotOptions.bar.horizontal;var h=new y(this.ctx,r);t=h.getLogSeries(t),this.series=t,this.yRatio=h.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var c=o.group({class:"apexcharts-".concat(n,"-series apexcharts-plot-series")}),d=function(i){s.isBoxPlot="boxPlot"===r.config.chart.type||"boxPlot"===r.config.series[i].type;var n,h,d,g,u=void 0,p=void 0,f=[],b=[],v=r.globals.comboCharts?a[i]:i,m=o.group({class:"apexcharts-series",seriesName:x.escapeString(r.globals.seriesNames[v]),rel:i+1,"data:realIndex":v});s.ctx.series.addCollapsedClassToSeries(m,v),t[i].length>0&&(s.visibleI=s.visibleI+1);var y,w;s.yRatio.length>1&&(s.yaxisIndex=v);var k=s.barHelpers.initialPositions();p=k.y,y=k.barHeight,h=k.yDivision,g=k.zeroW,u=k.x,w=k.barWidth,n=k.xDivision,d=k.zeroH,b.push(u+w/2);for(var A=o.group({class:"apexcharts-datalabels","data:realIndex":v}),S=function(a){var o=s.barHelpers.getStrokeWidth(i,a,v),c=null,x={indexes:{i:i,j:a,realIndex:v},x:u,y:p,strokeWidth:o,elSeries:m};c=s.isHorizontal?s.drawHorizontalBoxPaths(e(e({},x),{},{yDivision:h,barHeight:y,zeroW:g})):s.drawVerticalBoxPaths(e(e({},x),{},{xDivision:n,barWidth:w,zeroH:d})),p=c.y,u=c.x,a>0&&b.push(u+w/2),f.push(p),c.pathTo.forEach((function(e,n){var h=!s.isBoxPlot&&s.candlestickOptions.wick.useFillColor?c.color[n]:r.globals.stroke.colors[i],d=l.fillPath({seriesNumber:v,dataPointIndex:a,color:c.color[n],value:t[i][a]});s.renderSeries({realIndex:v,pathFill:d,lineFill:h,j:a,i:i,pathFrom:c.pathFrom,pathTo:e,strokeWidth:o,elSeries:m,x:u,y:p,series:t,barHeight:y,barWidth:w,elDataLabelsWrap:A,visibleSeries:s.visibleI,type:r.config.chart.type})}))},C=0;Cb.c&&(d=!1);var w=Math.min(b.o,b.c),k=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(w=r,k=r):(w=r-w/f,k=r-k/f,v=r-b.h/f,y=r-b.l/f,A=r-b.m/f);var C=l.move(S,r),L=l.move(S+s/2,w);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,A)+l.line(S,A)+l.line(S,w+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A)+"z"]:[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,y)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,k-o/2)],L+=l.move(S,w),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:k,barXPosition:S,color:this.isBoxPlot?p:d?[g]:[u]}}},{key:"drawHorizontalBoxPaths",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new m(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,p=this.getOHLCValue(u,c),f=r,x=r,b=Math.min(p.o,p.c),v=Math.max(p.o,p.c),y=p.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var w=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,f=r+p.h/g,x=r+p.l/g,y=r+p.m/g);var k=l.move(r,w),A=l.move(b,w+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),k=[l.move(b,w)+l.line(b,w+s/2)+l.line(f,w+s/2)+l.line(f,w+s/2-s/4)+l.line(f,w+s/2+s/4)+l.line(f,w+s/2)+l.line(b,w+s/2)+l.line(b,w+s)+l.line(y,w+s)+l.line(y,w)+l.line(b+o/2,w),l.move(y,w)+l.line(y,w+s)+l.line(v,w+s)+l.line(v,w+s/2)+l.line(x,w+s/2)+l.line(x,w+s-s/4)+l.line(x,w+s/4)+l.line(x,w+s/2)+l.line(v,w+s/2)+l.line(v,w)+l.line(y,w)+"z"],A+=l.move(b,w),n.globals.isXNumeric||(i+=a),{pathTo:k,pathFrom:A,x:v,y:i,barYPosition:w,color:d}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),s}(yt),At=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkColorRange",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:"getShadeColor",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,"treemap"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new x;return s.config.plotOptions[t].enableShades&&(l="dark"===this.w.config.theme.mode?x.hexToRgba(h.shadeColor(-1*r,n.color),s.config.fill.opacity):x.hexToRgba(h.shadeColor(r,n.color),s.config.fill.opacity)),{color:l,colorProps:n}}},{key:"determineColor",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&"treemap"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,u(a.globals.series[e])),c=Math.max.apply(Math,u(a.globals.series[e]));r.distributed||"heatmap"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:"calculateDataLabels",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new m(this.ctx),c=new O(this.ctx),d=null;if(l.enabled){d=h.group({class:"apexcharts-data-labels"});var g=l.offsetX,u=l.offsetY,p=i+g,f=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:p,y:f,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:"addListeners",value:function(t){var e=new m(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this,t))}}]),t}(),St=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new At(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return r(t,[{key:"draw",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h=0;n?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:x.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new v(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,p=0;p-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=w.x,S=w.y,C=100*u/this.fullAngle+"%";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+o):a+o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(h=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(h)>this.fullAngle&&(h-=this.fullAngle);var c=Math.PI*(h-90)/180,d=i.centerX+r*Math.cos(l),g=i.centerY+r*Math.sin(l),u=i.centerX+r*Math.cos(c),p=i.centerY+r*Math.sin(c),f=x.polarToCartesian(i.centerX,i.centerY,i.donutSize,h),b=x.polarToCartesian(i.centerX,i.centerY,i.donutSize,n),v=s>180?1:0,y=["M",d,g,"A",r,r,0,v,1,u,p];return e="donut"===i.chartType?[].concat(y,["L",f.x,f.y,"A",i.donutSize,i.donutSize,0,v,0,b.x,b.y,"L",d,g,"z"]).join(" "):"pie"===i.chartType||"polarArea"===i.chartType?[].concat(y,["L",i.centerX,i.centerY,"L",d,g]).join(" "):[].concat(y).join(" "),o.roundPathCorners(e,2*this.strokeWidth)}},{key:"drawPolarElements",value:function(t){var e=this.w,i=new _(this.ctx),a=new m(this.ctx),s=new Ct(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),e.config.yaxis[0].tickAmount,0,!0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n1)o&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!o)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var h=s.globals.selectedDataPoints[0],c=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),t}(),Pt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var i=this.w;this.graphics=new m(this.ctx),this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight0&&(f=i.getPreviousPath(n));for(var b=0;b=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:"",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var p=h.dropShadow;s.dropShadow(u,p)}l.add(u),u.attr("id","apexcharts-radialbarTrack-"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new m(this.ctx),a=new R(this.ctx),s=new v(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;this.radialDataLabels.show&&(u=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})),"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var p=!1;e.config.plotOptions.radialBar.inverseOrder&&(p=!0);for(var f=p?t.series.length-1:0;p?f>=0:f100?100:t.series[f])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*x.negToZero(e.globals.previousPaths[f])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var L=S-w,P=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[f]:e.config.stroke.dashArray,I=i.drawPath({d:"",stroke:y,strokeWidth:o,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+f,strokeDashArray:P});if(m.setAttrs(I.node,{"data:angle":L,"data:value":t.series[f]}),e.config.chart.dropShadow.enabled){var T=e.config.chart.dropShadow;s.dropShadow(I,T,f)}if(s.setSelectionFilter(I,0,f),this.addListeners(I,this.radialDataLabels),b.add(I),I.attr({index:0,j:f}),this.barLabels.enabled){var M=x.polarToCartesian(t.centerX,t.centerY,t.size,w),z=this.barLabels.formatter(e.globals.seriesNames[f],{seriesIndex:f,w:e}),X=["apexcharts-radialbar-label"];this.barLabels.onClick||X.push("apexcharts-no-click");var E=this.barLabels.useSeriesColors?e.globals.colors[f]:e.config.chart.foreColor;E||(E=e.config.chart.foreColor);var Y=M.x-this.barLabels.margin,F=M.y,H=i.drawText({x:Y,y:F,text:z,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:E,cssClass:X.join(" ")});H.on("click",this.onBarLabelClick),H.attr({rel:f+1}),0!==w&&H.attr({"transform-origin":"".concat(Y," ").concat(F),transform:"rotate(".concat(w," 0 0)")}),b.add(H)}var D=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(D=e.config.chart.animations.speed),e.globals.dataChanged&&(D=e.config.chart.animations.dynamicAnimation.speed),this.animDur=D/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(I,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:f,totalItems:2,animBeginArr:this.animBeginArr,dur:D,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:"drawHollow",value:function(t){var e=new m(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new R(this.ctx),o=x.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:"pattern".concat(s.globals.cuid).concat(o)}),a="url(#pattern".concat(s.globals.cuid).concat(o,")");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}},{key:"onBarLabelClick",value:function(t){var e=parseInt(t.target.getAttribute("rel"),10)-1,i=this.barLabels.onClick,a=this.w;i&&i(a.globals.seriesNames[e],{w:a,seriesIndex:e})}}]),i}(Lt),Tt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=a.globals.seriesRangeStart,this.seriesRangeEnd=a.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var r=s.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),n=0;n0&&(this.visibleI=this.visibleI+1);var b=0,v=0;this.yRatio.length>1&&(this.yaxisIndex=p);var y=this.barHelpers.initialPositions();u=y.y,d=y.zeroW,g=y.x,v=y.barWidth,b=y.barHeight,l=y.xDivision,h=y.yDivision,c=y.zeroH;for(var w=s.group({class:"apexcharts-datalabels","data:realIndex":p}),k=s.group({class:"apexcharts-rangebar-goals-markers"}),A=0;A0}));return this.isHorizontal?(a=g.config.plotOptions.bar.rangeBarGroupRows?r+h*b:r+n*this.visibleI+h*b,v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(p)>-1&&(a=(n=d.barHeight/u.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+n*(this.visibleI+u.indexOf(p))+h*b)):(b>-1&&(s=g.config.plotOptions.bar.rangeBarGroupRows?o+c*b:o+l*this.visibleI+c*b),v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(p)>-1&&(s=(l=d.barWidth/u.length)*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+u.indexOf(p))+c*b)),{barYPosition:a,barXPosition:s,barHeight:n,barWidth:l}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.xDivision,s=t.barWidth,r=t.barXPosition,o=t.zeroH,n=this.w,l=e.i,h=e.j,c=this.yRatio[this.yaxisIndex],d=e.realIndex,g=this.getRangeValue(d,h),u=Math.min(g.start,g.end),p=Math.max(g.start,g.end);void 0===this.series[l][h]||null===this.series[l][h]?u=o:(u=o-u/c,p=o-p/c);var f=Math.abs(p-u),x=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:s,y1:u,y2:p,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:e.realIndex,i:d,j:h,w:n});if(n.globals.isXNumeric){var b=this.getBarXForNumericXAxis({x:i,j:h,realIndex:d,barWidth:s});i=b.x,r=b.barXPosition}else i+=a;return{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:f,x:i,y:p,goalY:this.barHelpers.getGoalValues("y",null,o,l,h),barXPosition:r}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,g=Math.abs(d-c),u=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:c,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,realIndex:e.realIndex,j:e.j,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:u.pathTo,pathFrom:u.pathFrom,barWidth:g,x:d,goalX:this.barHelpers.getGoalValues("x",l,null,e.realIndex,e.j),y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),s}(yt),Mt=function(){function t(e){a(this,t),this.w=e.w,this.lineCtx=e}return r(t,[{key:"sameValueSeriesFix",value:function(t,e){var i=this.w;if(("gradient"===i.config.fill.type||"gradient"===i.config.fill.type[t])&&new y(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(x.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(o.realIndex,10)===parseInt(a,10)&&("line"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e,i,a=t.i,s=t.series,r=t.prevY,o=t.lineYPosition,n=this.w,l=n.config.chart.stacked&&!n.globals.comboCharts||n.config.chart.stacked&&n.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||"bar"===(null===(e=this.w.config.series[a])||void 0===e?void 0:e.type));if(void 0!==(null===(i=s[a])||void 0===i?void 0:i[0]))r=(o=l&&a>0?this.lineCtx.prevSeriesY[a-1][0]:this.lineCtx.zeroY)-s[a][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?s[a][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(l&&a>0&&void 0===s[a][0])for(var h=a-1;h>=0;h--)if(null!==s[h][0]&&void 0!==s[h][0]){r=o=this.lineCtx.prevSeriesY[h][0];break}return{prevY:r,lineYPosition:o}}}]),t}(),zt=function(t){for(var e,i,a,s,r=function(t){for(var e=[],i=t[0],a=t[1],s=e[0]=Yt(i,a),r=1,o=t.length-1;r9&&(s=3*a/Math.sqrt(s),r[l]=s*e,r[l+1]=s*i);for(var h=0;h<=o;h++)s=(t[Math.min(o,h+1)][0]-t[Math.max(0,h-1)][0])/(6*(1+r[h]*r[h])),n.push([s||0,r[h]*s||0]);return n},Xt=function(t,e){for(var i="",a=0;a1&&Math.abs(s[o-2]-r[n-2])4?(i+="C".concat(s[0],", ").concat(s[1]),i+=", ".concat(s[2],", ").concat(s[3]),i+=", ".concat(s[4],", ").concat(s[5])):o>2&&(i+="S".concat(s[0],", ").concat(s[1]),i+=", ".concat(s[2],", ").concat(s[3]))}return i},Et=function(t){var e=zt(t),i=t[1],a=t[0],s=[],r=e[1],o=e[0];s.push(a,[a[0]+o[0],a[1]+o[1],i[0]-r[0],i[1]-r[1],i[0],i[1]]);for(var n=2,l=e.length;n0&&(b=(o.globals.seriesX[u][0]-o.globals.minX)/this.xRatio),x.push(b);var v=b,w=this.zeroY,k=this.zeroY;w=this.lineHelpers.determineFirstPrevY({i:g,series:t,prevY:w,lineYPosition:0}).prevY,"smooth"===o.config.stroke.curve&&null===t[g][0]?p.push(null):p.push(w);"rangeArea"===l&&(k=this.lineHelpers.determineFirstPrevY({i:g,series:s,prevY:k,lineYPosition:0}).prevY,f.push(k));var A={type:l,series:t,realIndex:u,i:g,x:b,y:1,pathsFrom:this._calculatePathsFrom({type:l,series:t,i:g,realIndex:u,prevX:v,prevY:w,prevY2:k}),linePaths:[],areaPaths:[],seriesIndex:a,lineYPosition:0,xArrj:x,yArrj:p,y2Arrj:f,seriesRangeEnd:s},S=this._iterateOverDataPoints(e(e({},A),{},{iterations:"rangeArea"===l?t[g].length-1:void 0,isRangeStart:!0}));if("rangeArea"===l){var C=this._calculatePathsFrom({series:s,i:g,realIndex:u,prevX:v,prevY:k}),L=this._iterateOverDataPoints(e(e({},A),{},{series:s,pathsFrom:C,iterations:s[g].length-1,isRangeStart:!1}));S.linePaths[0]=L.linePath+S.linePath,S.pathFromLine=L.pathFromLine+S.pathFromLine}this._handlePaths({type:l,realIndex:u,i:g,paths:S}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),d.push(this.elSeries)}if(void 0!==(null===(r=o.config.series[0])||void 0===r?void 0:r.zIndex)&&d.sort((function(t,e){return Number(t.node.getAttribute("zIndex"))-Number(e.node.getAttribute("zIndex"))})),o.config.chart.stacked)for(var P=d.length;P>0;P--)h.add(d[P-1]);else for(var I=0;I1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||"end"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",zIndex:void 0!==a.config.series[i].zIndex?a.config.series[i].zIndex:i,seriesName:x.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.prevX,c=t.prevY,d=t.prevY2,g=this.w,u=new m(this.ctx);if(null===o[n][0]){for(var p=0;p0){var f=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=f.pathFromLine,s=f.pathFromArea}return{prevX:h,prevY:c,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var i=t.type,a=t.realIndex,s=t.i,r=t.paths,o=this.w,n=new m(this.ctx),l=new R(this.ctx);this.prevSeriesY.push(r.yArrj),o.globals.seriesXvalues[a]=r.xArrj,o.globals.seriesYvalues[a]=r.yArrj;var h=o.config.forecastDataPoints;if(h.count>0&&"rangeArea"!==i){var c=o.globals.seriesXvalues[a][o.globals.seriesXvalues[a].length-h.count-1],d=n.drawRect(c,0,o.globals.gridWidth,o.globals.gridHeight,0);o.globals.dom.elForecastMask.appendChild(d.node);var g=n.drawRect(0,0,c,o.globals.gridHeight,0);o.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||o.globals.delayedElements.push({el:this.elPointsMain.node,index:a});var u={i:s,realIndex:a,animationDelay:s,initialSpeed:o.config.chart.animations.speed,dataChangeSpeed:o.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(i)};if("area"===i)for(var p=l.fillPath({seriesNumber:a}),f=0;f0&&"rangeArea"!==i){var S=n.renderPaths(k);S.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&S.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(S),S.attr("clip-path","url(#forecastMask".concat(o.globals.cuid,")")),A.attr("clip-path","url(#nonForecastMask".concat(o.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(t){var e,i=this,a=t.type,s=t.series,r=t.iterations,o=t.realIndex,n=t.i,l=t.x,h=t.y,c=t.pathsFrom,d=t.linePaths,g=t.areaPaths,u=t.seriesIndex,p=t.lineYPosition,f=t.xArrj,b=t.yArrj,v=t.y2Arrj,y=t.isRangeStart,w=t.seriesRangeEnd,k=this.w,A=new m(this.ctx),S=this.yRatio,C=c.prevY,L=c.linePath,P=c.areaPath,I=c.pathFromLine,T=c.pathFromArea,M=x.isNumber(k.globals.minYArr[o])?k.globals.minYArr[o]:k.globals.minY;r||(r=k.globals.dataPoints>1?k.globals.dataPoints-1:k.globals.dataPoints);for(var z=function(t,e){return e-t/S[i.yaxisIndex]+2*(i.isReversed?t/S[i.yaxisIndex]:0)},X=h,E=k.config.chart.stacked&&!k.globals.comboCharts||k.config.chart.stacked&&k.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||"bar"===(null===(e=this.w.config.series[o])||void 0===e?void 0:e.type)),Y=0;Y0&&k.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(n-1)][Y+1]}else p=this.zeroY;else p=this.zeroY;F?h=z(M,p):(h=z(s[n][Y+1],p),"rangeArea"===a&&(X=z(w[n][Y+1],p))),f.push(l),F&&"smooth"===k.config.stroke.curve?b.push(null):b.push(h),v.push(X);var H=this.lineHelpers.calculatePoints({series:s,x:l,y:h,realIndex:o,i:n,j:Y,prevY:C}),D=this._createPaths({type:a,series:s,i:n,realIndex:o,j:Y,x:l,y:h,y2:X,xArrj:f,yArrj:b,y2Arrj:v,linePath:L,areaPath:P,linePaths:d,areaPaths:g,seriesIndex:u,isRangeStart:y});g=D.areaPaths,d=D.linePaths,P=D.areaPath,L=D.linePath,!this.appendPathFrom||"smooth"===k.config.stroke.curve&&"rangeArea"===a||(I+=A.line(l,this.zeroY),T+=A.line(l,this.zeroY)),this.handleNullDataPoints(s,H,n,Y,o),this._handleMarkersAndLabels({type:a,pointsPos:H,i:n,j:Y,realIndex:o,isRangeStart:y})}return{yArrj:b,xArrj:f,pathFromArea:T,areaPaths:g,pathFromLine:I,linePaths:d,linePath:L,areaPath:P}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new O(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:"_createPaths",value:function(t){var e=t.type,i=t.series,a=t.i,s=t.realIndex,r=t.j,o=t.x,n=t.y,l=t.xArrj,h=t.yArrj,c=t.y2,d=t.y2Arrj,g=t.linePath,u=t.areaPath,p=t.linePaths,f=t.areaPaths,x=t.seriesIndex,b=t.isRangeStart,v=this.w,y=new m(this.ctx),w=v.config.stroke.curve,k=this.areaBottomY;if(Array.isArray(v.config.stroke.curve)&&(w=Array.isArray(x)?v.config.stroke.curve[x[a]]:v.config.stroke.curve[a]),"rangeArea"===e&&(v.globals.hasNullValues||v.config.forecastDataPoints.count>0)&&"smooth"===w&&(w="straight"),"smooth"===w){var A="rangeArea"===e?l.length===v.globals.dataPoints:r===i[a].length-2,S=l.map((function(t,e){return[l[e],h[e]]})).filter((function(t){return null!==t[1]}));if(A&&S.length>1){var C=Et(S);if(g+=Xt(C,v.globals.gridWidth),null===i[a][0]?u=g:u+=Xt(C,v.globals.gridWidth),"rangeArea"===e&&b){g+=y.line(l[l.length-1],d[d.length-1]);var L=l.slice().reverse(),P=d.slice().reverse(),I=L.map((function(t,e){return[L[e],P[e]]})),T=Et(I);u=g+=Xt(T,v.globals.gridWidth)}else u+=y.line(S[S.length-1][0],k)+y.line(S[0][0],k)+y.move(S[0][0],S[0][1])+"z";p.push(g),f.push(u)}}else{if(null===i[a][r+1]){g+=y.move(o,n);var M=v.globals.isXNumeric?(v.globals.seriesX[s][r]-v.globals.minX)/this.xRatio:o-this.xDivision;u=u+y.line(M,k)+y.move(o,n)+"z"}null===i[a][r]&&(g+=y.move(o,n),u+=y.move(o,k)),"stepline"===w?(g=g+y.line(o,null,"H")+y.line(null,n,"V"),u=u+y.line(o,null,"H")+y.line(null,n,"V")):"straight"===w&&(g+=y.line(o,n),u+=y.line(o,n)),r===i[a].length-2&&(u=u+y.line(o,k)+y.move(o,n)+"z","rangeArea"===e&&b?g=g+y.line(o,c)+y.move(o,c)+"z":(p.push(g),f.push(u)))}return{linePaths:p,areaPaths:f,linePath:g,areaPath:u}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.markers.plotChartMarkers(e,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);null!==o&&this.elPointsMain.add(o)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;er-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute("transform","rotate(-90 ".concat(h.x," ").concat(h.y,") translate(").concat(l.height/3,")"))}}},{key:"truncateLabels",value:function(t,e,i,a,s,r){var o=new m(this.ctx),n=o.getTextRects(t,e).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,l=o.getTextBasedOnMaxWidth({text:t,maxWidth:n,fontSize:e});return t.length!==l.length&&n/e<5?"":l}},{key:"animateTreemap",value:function(t,e,i,a){var s=new b(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Ot=86400,Nt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return r(t,[{key:"calculateTimeScaleTicks",value:function(t,i){var a=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timescaleLabels=[],[];var r=new I(this.ctx),o=(i-t)/864e5;this.determineInterval(o),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,o<.00011574074074074075?s.globals.disableZoomIn=!0:o>5e4&&(s.globals.disableZoomOut=!0);var n=r.getTimeUnitsfromTimestamp(t,i,this.utc),l=s.globals.gridWidth/o,h=l/24,c=h/60,d=c/60,g=Math.floor(24*o),u=Math.floor(1440*o),p=Math.floor(o*Ot),f=Math.floor(o),x=Math.floor(o/30),b=Math.floor(o/365),v={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:p,numberOfMinutes:u,numberOfHours:g,numberOfDays:f,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case"years":this.generateYearScale(m);break;case"months":case"half_year":this.generateMonthScale(m);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(m);break;case"hours":this.generateHourScale(m);break;case"minutes_fives":case"minutes":this.generateMinuteScale(m);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var i={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?e(e({},i),{},{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?e(e({},i),{},{value:t.value}):"minute"===t.unit?e(e({},i),{},{value:t.value,minute:t.value}):"second"===t.unit?e(e({},i),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,i=Math.ceil(s.globals.gridWidth/120),r=t.value;void 0!==s.config.xaxis.tickAmount&&(i=s.config.xaxis.tickAmount),y.length>i&&(e=Math.floor(y.length/i));var o=!1,n=!1;switch(a.tickInterval){case"years":"year"===t.unit&&(o=!0);break;case"half_year":e=7,"year"===t.unit&&(o=!0);break;case"months":e=1,"year"===t.unit&&(o=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(o=!0),30===r&&(n=!0);break;case"months_days":e=10,"month"===t.unit&&(o=!0),30===r&&(n=!0);break;case"week_days":e=8,"month"===t.unit&&(o=!0);break;case"days":e=1,"month"===t.unit&&(o=!0);break;case"hours":"day"===t.unit&&(o=!0);break;case"minutes_fives":case"seconds_fives":r%5!=0&&(n=!0);break;case"seconds_tens":r%10!=0&&(n=!0)}if("hours"===a.tickInterval||"minutes_fives"===a.tickInterval||"seconds_tens"===a.tickInterval||"seconds_fives"===a.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ot(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval="years";break;case t>800:this.tickInterval="half_year";break;case t>180:this.tickInterval="months";break;case t>90:this.tickInterval="months_fortnight";break;case t>60:this.tickInterval="months_days";break;case t>30:this.tickInterval="week_days";break;case t>2:this.tickInterval="days";break;case e>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new I(this.ctx),h="year";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:x.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:x.monthMod(i+1)});for(var d=o,g=n,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=x.monthMod(a+1);var g=s+d,u=x.monthMod(n),p=n;0===n&&(c="year",p=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:x.monthMod(a)});for(var f=n+1,b=l,v=0,m=1;vo.determineDaysOfMonths(e+1,i)?(h=1,n="month",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=x.monthMod(e.minMonth),n="month",h=e.minDate):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:x.monthMod(u),day:h});for(var p=d,f=0;fn.determineDaysOfMonths(e+1,s)&&(f=1,e+=1),{month:e,date:f}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,p=u;60===d&&(g=0,p=(u=e.minHour)+1);var f=i;p>=24&&(p=0,f+=1,l="day");var b=h(f,a).month;b=c(f,b),this.timeScaleArray.push({position:g,value:u,unit:l,day:f,hour:p,year:s,month:x.monthMod(b)}),p++;for(var v=g,m=0;m=24)p=0,l="day",b=h(f+=1,b).month,b=c(f,b);var y=this._getYear(s,b,0);v=60*r+v;var w=0===p?f:p;this.timeScaleArray.push({position:v,value:w,unit:l,hour:p,day:f,year:y,month:x.monthMod(b)}),p++}}},{key:"generateMinuteScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,p=n,f=s,b=(60-i-e/1e3)*h,v=0;v=60&&(d=0,24===(f+=1)&&(f=0)),this.timeScaleArray.push({position:b,value:d,unit:"minute",hour:f,minute:d,day:g,year:this._getYear(p,u,0),month:x.monthMod(u)}),b+=l,d++}},{key:"generateSecondScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,p=n,f=s,b=(1e3-e)/1e3*l,v=0;v=60&&(c=0,++d>=60&&(d=0,24===++f&&(f=0))),this.timeScaleArray.push({position:b,value:c,unit:"second",hour:f,minute:d,second:c,day:g,year:this._getYear(p,u,0),month:x.monthMod(u)}),b+=l,c++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),"minute"===t.unit?i+=":"+("0"+e).slice(-2):i+=":"+(t.minute?("0"+t.minute).slice(-2):"00"),"second"===t.unit?i+=":"+("0"+e).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new I(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(n=l.year),"month"===t.unit&&(n=l.month),"day"===t.unit&&(n=l.day),"hour"===t.unit&&(n=l.hour),"minute"===t.unit&&(n=l.minute),"second"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new m(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Wt=function(){function t(e,i){a(this,t),this.ctx=i,this.w=i.w,this.el=e}return r(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type||"boxPlot"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.chartID,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),m.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background="dark"!==e.theme.mode||e.chart.background?e.chart.background:"rgba(0, 0, 0, 0.8)",this.setSVGDimensions(),t.dom.elLegendForeign=document.createElementNS(t.SVGNS,"foreignObject"),m.setAttrs(t.dom.elLegendForeign,{x:0,y:0,width:t.svgWidth,height:t.svgHeight}),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),t.dom.elLegendForeign.appendChild(t.dom.elLegendWrap),t.dom.Paper.node.appendChild(t.dom.elLegendForeign),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},o={series:[],i:[]},n={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},u={series:[],seriesRangeEnd:[],i:[]};s.series.map((function(e,p){var f=0;void 0!==t[p].type?("column"===t[p].type||"bar"===t[p].type?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),h.series.push(e),h.i.push(p),f++,i.globals.columnSeries=h.series):"area"===t[p].type?(o.series.push(e),o.i.push(p),f++):"line"===t[p].type?(r.series.push(e),r.i.push(p),f++):"scatter"===t[p].type?(n.series.push(e),n.i.push(p)):"bubble"===t[p].type?(l.series.push(e),l.i.push(p),f++):"candlestick"===t[p].type?(c.series.push(e),c.i.push(p),f++):"boxPlot"===t[p].type?(d.series.push(e),d.i.push(p),f++):"rangeBar"===t[p].type?(g.series.push(e),g.i.push(p),f++):"rangeArea"===t[p].type?(u.series.push(s.seriesRangeStart[p]),u.seriesRangeEnd.push(s.seriesRangeEnd[p]),u.i.push(p),f++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea"),f>1&&(s.comboCharts=!0)):(r.series.push(e),r.i.push(p))}));var p=new Ft(this.ctx,e),f=new kt(this.ctx,e);this.ctx.pie=new Lt(this.ctx);var x=new It(this.ctx);this.ctx.rangeBar=new Tt(this.ctx,e);var b=new Pt(this.ctx),v=[];if(s.comboCharts){if(o.series.length>0&&v.push(p.draw(o.series,"area",o.i)),h.series.length>0)if(i.config.chart.stacked){var m=new wt(this.ctx,e);v.push(m.draw(h.series,h.i))}else this.ctx.bar=new yt(this.ctx,e),v.push(this.ctx.bar.draw(h.series,h.i));if(u.series.length>0&&v.push(p.draw(u.series,"rangeArea",u.i,u.seriesRangeEnd)),r.series.length>0&&v.push(p.draw(r.series,"line",r.i)),c.series.length>0&&v.push(f.draw(c.series,"candlestick",c.i)),d.series.length>0&&v.push(f.draw(d.series,"boxPlot",d.i)),g.series.length>0&&v.push(this.ctx.rangeBar.draw(g.series,g.i)),n.series.length>0){var y=new Ft(this.ctx,e,!0);v.push(y.draw(n.series,"scatter",n.i))}if(l.series.length>0){var w=new Ft(this.ctx,e,!0);v.push(w.draw(l.series,"bubble",l.i))}}else switch(a.chart.type){case"line":v=p.draw(s.series,"line");break;case"area":v=p.draw(s.series,"area");break;case"bar":if(a.chart.stacked)v=new wt(this.ctx,e).draw(s.series);else this.ctx.bar=new yt(this.ctx,e),v=this.ctx.bar.draw(s.series);break;case"candlestick":v=new kt(this.ctx,e).draw(s.series,"candlestick");break;case"boxPlot":v=new kt(this.ctx,e).draw(s.series,a.chart.type);break;case"rangeBar":v=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":v=p.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":v=new St(this.ctx,e).draw(s.series);break;case"treemap":v=new Dt(this.ctx,e).draw(s.series);break;case"pie":case"donut":case"polarArea":v=this.ctx.pie.draw(s.series);break;case"radialBar":v=x.draw(s.series);break;case"radar":v=b.draw(s.series);break;default:v=p.draw(s.series)}return v}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=x.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();"%"===a?x.isNumber(i[0])&&(0===i[0].width&&(i=x.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):"px"!==a&&""!==a||(t.svgWidth=parseInt(e.chart.width,10));var s=e.chart.height.toString().split(/[0-9]+/g).pop();if("auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===s){var r=x.getDimensions(this.el.parentNode);t.svgHeight=r[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;if(t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),m.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight}),"%"!==s){var o=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+o+"px"}t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};m.setAttrs(t.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,"top"!==t.config.legend.position&&"bottom"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new lt(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=x.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",l),t.config.chart.height&&String(t.config.chart.height).indexOf("%")>0||(e.dom.elWrap.style.height=l+"px",m.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=l+"px")}},{key:"coreCalculations",value:function(){new U(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new Y,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new Q(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new Q(this.ctx).drawYCrosshairs();if("datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){this.ctx.timeScale=new Nt(this.ctx);var i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}t=new y(this.ctx).getCalculatedRatios()}return t}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,i=this.w;if(i.config.chart.brush.enabled&&"function"!=typeof i.config.chart.events.selection){var a=Array.isArray(i.config.chart.brush.targets)||[i.config.chart.brush.target];a.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,"function"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),"function"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),i.config.chart.events.selection=function(t,s){a.forEach((function(t){var a=ApexCharts.getChartByID(t),r=x.clone(i.config.yaxis);if(i.config.chart.brush.autoScaleYaxis&&1===a.w.globals.series.length){var o=new _(a);r=o.autoScaleY(a,r,s)}var n=a.w.config.yaxis.reduce((function(t,i,s){return[].concat(u(t),[e(e({},a.w.config.yaxis[s]),{},{min:r[0].min,max:r[0].max})])}),[]);a.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:n},!1,!1,!1,!1)}))}}}}]),t}(),Bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"_updateOptions",value:function(t){var e=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var l=[e.ctx];r&&(l=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(l=[e.ctx],e.ctx.w.globals.isExecCalled=!1),l.forEach((function(r,h){var c=r.w;if(c.globals.shouldAnimate=s,a||(c.globals.resized=!0,c.globals.dataChanged=!0,s&&r.series.getPreviousPaths()),t&&"object"===i(t)&&(r.config=new E(t),t=y.extendArrayProps(r.config,t,c),r.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,c.config=x.extend(c.config,t),o&&(c.globals.lastXAxis=t.xaxis?x.clone(t.xaxis):[],c.globals.lastYAxis=t.yaxis?x.clone(t.yaxis):[],c.globals.initialConfig=x.extend({},c.config),c.globals.initialSeries=x.clone(c.config.series),t.series))){for(var d=0;d2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=x.clone(o.config.series),o.globals.initialSeries=x.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:"_extendSeries",value:function(t,i){var a=this.w,s=a.config.series[i];return e(e({},a.config.series[i]),{},{name:t.name?t.name:null==s?void 0:s.name,color:t.color?t.color:null==s?void 0:s.color,type:t.type?t.type:null==s?void 0:s.type,group:t.group?t.group:null==s?void 0:s.group,data:t.data?t.data:null==s?void 0:s.data,zIndex:void 0!==t.zIndex?t.zIndex:i})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"']")).members[0],"pie"!==i.config.chart.type&&"polarArea"!==i.config.chart.type&&"donut"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new m(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new X(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){return t.chart&&t.chart.stacked&&"100%"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Rt="undefined"!=typeof window?window:void 0,Ht=function(t,e){var a=(void 0!==this?this:t).SVG=function(t){if(a.supported)return t=new a.Doc(t),a.parser.draw||a.prepare(),t};if(a.ns="http://www.w3.org/2000/svg",a.xmlns="http://www.w3.org/2000/xmlns/",a.xlink="http://www.w3.org/1999/xlink",a.svgjs="http://svgjs.dev",a.supported=!0,!a.supported)return!1;a.did=1e3,a.eid=function(t){return"Svgjs"+d(t)+a.did++},a.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute("id",this.eid(t)),i},a.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var i=t.length-1;i>=0;i--)if(t[i])for(var s in e)t[i].prototype[s]=e[s];a.Set&&a.Set.inherit&&a.Set.inherit()},a.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,a.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&a.extend(e,t.extend),t.construct&&a.extend(t.parent||a.Container,t.construct),e},a.adopt=function(e){return e?e.instance?e.instance:((i="svg"==e.nodeName?e.parentNode instanceof t.SVGElement?new a.Nested:new a.Doc:"linearGradient"==e.nodeName?new a.Gradient("linear"):"radialGradient"==e.nodeName?new a.Gradient("radial"):a[d(e.nodeName)]?new(a[d(e.nodeName)]):new a.Element(e)).type=e.nodeName,i.node=e,e.instance=i,i instanceof a.Doc&&i.namespace().defs(),i.setData(JSON.parse(e.getAttribute("svgjs:data"))||{}),i):null;var i},a.prepare=function(){var t=e.getElementsByTagName("body")[0],i=(t?new a.Doc(t):a.adopt(e.documentElement).nested()).size(2,0);a.parser={body:t||e.documentElement,draw:i.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:i.polyline().node,path:i.path().node,native:a.create("svg")}},a.parser={native:a.create("svg")},e.addEventListener("DOMContentLoaded",(function(){a.parser.draw||a.prepare()}),!1),a.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},a.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new a.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),a.Color.test=function(t){return t+="",a.regex.isHex.test(t)||a.regex.isRgb.test(t)},a.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},a.Color.isColor=function(t){return a.Color.isRgb(t)||a.Color.test(t)},a.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},a.extend(a.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),a.PointArray=function(t,e){a.Array.call(this,t,e||[[0,0]])},a.PointArray.prototype=new a.Array,a.PointArray.prototype.constructor=a.PointArray;for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},S:function(t,e){return e.x=t[2],e.y=t[3],["S",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]}},r="mlhvqtcsaz".split(""),o=0,n=r.length;ol);return r},bbox:function(){return a.parser.draw||a.prepare(),a.parser.path.setAttribute("d",this.toString()),a.parser.path.getBBox()}}),a.Number=a.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(a.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof a.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new a.Number(t),new a.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new a.Number(t),new a.Number(this-t,this.unit||t.unit)},times:function(t){return t=new a.Number(t),new a.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new a.Number(t),new a.Number(this/t,this.unit||t.unit)},to:function(t){var e=new a.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new a.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new a.Number(this.destination).minus(this).times(t).plus(this):this}}}),a.Element=a.invent({create:function(t){this._stroke=a.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=u(this,t,e);return this.width(new a.Number(i.width)).height(new a.Number(i.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(a.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!=t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return a.get(this.attr(t))},parent:function(e){var i=this;if(!i.node.parentNode)return null;if(i=a.adopt(i.node.parentNode),!e)return i;for(;i&&i.node instanceof t.SVGElement;){if("string"==typeof e?i.matches(e):i instanceof e)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=a.adopt(i.node.parentNode)}},doc:function(){return this instanceof a.Doc?this:this.parent(a.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var i=e.createElement("svg");if(!(t&&this instanceof a.Parent))return i.appendChild(t=e.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),i.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");i.innerHTML=""+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var s=0,r=i.firstChild.childNodes.length;s":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},a.morph=function(t){return function(e,i){return new a.MorphObj(e,i).at(t)}},a.Situation=a.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new a.Number(t.duration).valueOf(),this.delay=new a.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),a.FX=a.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,s){"object"===i(t)&&(e=t.ease,s=t.delay,t=t.duration);var r=new a.Situation({duration:t||1e3,delay:s||0,ease:a.easing[e||"-"]||e});return this.queue(r),this},target:function(t){return t&&t instanceof a.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof a.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof a.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var i in e.animations){t=this.target()[i](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[i])||(e.animations[i]=[e.animations[i]]);for(var s=t.length;s--;)e.animations[i][s]instanceof a.Number&&(t[s]=new a.Number(t[s])),e.animations[i][s]=t[s].morph(e.animations[i][s])}for(var i in e.attrs)e.attrs[i]=new a.MorphObj(this.target().attr(i),e.attrs[i]);for(var i in e.styles)e.styles[i]=new a.MorphObj(this.target().style(i),e.styles[i]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on("finished.fx",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))})),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,a.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after((function(){this.off("during.fx",i)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire("during",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,i=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i[r].apply(i,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.attr.apply(i,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.style.apply(i,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r=0;--s)this[v[s]]=null!=t[v[s]]?t[v[s]]:e[v[s]]},extend:{extract:function(){var t=p(this,0,1);p(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new a.Matrix(this)}},clone:function(){return new a.Matrix(this)},morph:function(t){return this.destination=new a.Matrix(t),this},multiply:function(t){return new a.Matrix(this.native().multiply(function(t){return t instanceof a.Matrix||(t=new a.Matrix(t)),t}(t).native()))},inverse:function(){return new a.Matrix(this.native().inverse())},translate:function(t,e){return new a.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=a.parser.native.createSVGMatrix(),e=v.length-1;e>=0;e--)t[v[e]]=this[v[e]];return t},toString:function(){return"matrix("+b(this.a)+","+b(this.b)+","+b(this.c)+","+b(this.d)+","+b(this.e)+","+b(this.f)+")"}},parent:a.Element,construct:{ctm:function(){return new a.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof a.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new a.Matrix(e)}return new a.Matrix(this.node.getScreenCTM())}}}),a.Point=a.invent({create:function(t,e){var a;a=Array.isArray(t)?{x:t[0],y:t[1]}:"object"===i(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=a.x,this.y=a.y},extend:{clone:function(){return new a.Point(this)},morph:function(t,e){return this.destination=new a.Point(t,e),this}}}),a.extend(a.Element,{point:function(t,e){return new a.Point(t,e).transform(this.screenCTM().inverse())}}),a.extend(a.Element,{attr:function(t,e,s){if(null==t){for(t={},s=(e=this.node.attributes).length-1;s>=0;s--)t[e[s].nodeName]=a.regex.isNumber.test(e[s].nodeValue)?parseFloat(e[s].nodeValue):e[s].nodeValue;return t}if("object"===i(t))for(var r in t)this.attr(r,t[r]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?a.defaults.attrs[t]:a.regex.isNumber.test(e)?parseFloat(e):e;"stroke-width"==t?this.attr("stroke",parseFloat(e)>0?this._stroke:null):"stroke"==t&&(this._stroke=e),"fill"!=t&&"stroke"!=t||(a.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof a.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),"number"==typeof e?e=new a.Number(e):a.Color.isColor(e)?e=new a.Color(e):Array.isArray(e)&&(e=new a.Array(e)),"leading"==t?this.leading&&this.leading(e):"string"==typeof s?this.node.setAttributeNS(s,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!=t&&"x"!=t||this.rebuild(t,e)}return this}}),a.extend(a.Element,{transform:function(t,e){var s;return"object"!==i(t)?(s=new a.Matrix(this).extract(),"string"==typeof t?s[t]:s):(s=new a.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(s=e?s.multiply(new a.Matrix(t)):new a.Matrix(t)),this.attr("transform",s))}}),a.extend(a.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(a.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split("(");return[e[0],e[1].split(a.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return"matrix"==e[0]?t.multiply(f(e[1])):t[e[0]].apply(t,e[1])}),new a.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),a.Transformation=a.invent({create:function(t,e){if(arguments.length>1&&"boolean"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var a=0,s=this.arguments.length;a=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return a.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var i=this.children(),s=0,r=i.length;s=0;i--)e.childNodes[i]instanceof t.SVGElement&&x(e.childNodes[i]);return a.adopt(e).id(a.eid(e.nodeName))}function b(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if("string"==typeof e||a.Color.isRgb(e)||e&&"function"==typeof e.fill)this.attr(t,e);else for(var i=l[t].length-1;i>=0;i--)null!=e[l[t][i]]&&this.attr(l.prefix(t,l[t][i]),e[l[t][i]]);return this},a.extend(a.Element,a.FX,e)})),a.extend(a.Element,a.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr("transform",new a.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new a.Number(t).plus(this instanceof a.FX?0:this.x()),!0)},dy:function(t){return this.y(new a.Number(t).plus(this instanceof a.FX?0:this.y()),!0)}}),a.extend(a.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),a.Set=a.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new a.Set(t)}}}),a.FX.Set=a.invent({create:function(t){this.set=t}}),a.Set.inherit=function(){var t=[];for(var e in a.Shape.prototype)"function"==typeof a.Shape.prototype[e]&&"function"!=typeof a.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){a.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),a.get=function(t){var i=e.getElementById(function(t){var e=(t||"").toString().match(a.regex.reference);if(e)return e[1]}(t)||t);return a.adopt(i)},a.select=function(t,i){return new a.Set(a.utils.map((i||e).querySelectorAll(t),(function(t){return a.adopt(t)})))},a.extend(a.Parent,{select:function(t){return a.select(t,this.node)}});var v="abcdef".split("");if("function"!=typeof t.CustomEvent){var m=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent("CustomEvent");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};m.prototype=t.Event.prototype,a.CustomEvent=m}else a.CustomEvent=t.CustomEvent;return a},"function"==typeof define&&define.amd?define((function(){return Ht(Rt,Rt.document)})):"object"===("undefined"==typeof exports?"undefined":i(exports))&&"undefined"!=typeof module?module.exports=Rt.document?Ht(Rt,Rt.document):function(t){return Ht(t,t.document)}:Rt.SVG=Ht(Rt,Rt.document), +/*! svg.filter.js - v2.0.2 - 2016-02-24 + * https://github.com/wout/svg.filter.js + * Copyright (c) 2016 Wout Fierens; Licensed MIT */ +function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,a=[];e1&&(I*=a=Math.sqrt(a),T*=a);s=(new SVG.Matrix).rotate(M).scale(1/I,1/T).rotate(-M),F=F.transform(s),R=R.transform(s),r=[R.x-F.x,R.y-F.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var a=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,e,i){var a="string"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,"t"===t||"b"===t),y:this.pointCoord(i[1],e,"r"===t||"l"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=["points","pointsExclude"];for(var s in r){var o=this.options[r[s]];"string"==typeof o?o=o.length>0?o.split(/\s*,\s*/i):[]:"boolean"==typeof o&&"points"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"touchend.resize",(function(){e.done()})),SVG.on(window,"mousemove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"mouseup.resize",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+eo.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return oa&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var Gt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","isSeriesHidden","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new b(this.ctx),this.ctx.axes=new J(this.ctx),this.ctx.core=new Wt(this.ctx.el,this.ctx),this.ctx.config=new E({}),this.ctx.data=new W(this.ctx),this.ctx.grid=new j(this.ctx),this.ctx.graphics=new m(this.ctx),this.ctx.coreUtils=new y(this.ctx),this.ctx.crosshairs=new Q(this.ctx),this.ctx.events=new Z(this.ctx),this.ctx.exports=new G(this.ctx),this.ctx.localization=new $(this.ctx),this.ctx.options=new L,this.ctx.responsive=new K(this.ctx),this.ctx.series=new N(this.ctx),this.ctx.theme=new tt(this.ctx),this.ctx.formatters=new T(this.ctx),this.ctx.titleSubtitle=new et(this.ctx),this.ctx.legend=new lt(this.ctx),this.ctx.toolbar=new ht(this.ctx),this.ctx.tooltip=new bt(this.ctx),this.ctx.dimensions=new ot(this.ctx),this.ctx.updateHelpers=new Bt(this.ctx),this.ctx.zoomPanSelection=new ct(this.ctx),this.ctx.w.globals.tooltip=new bt(this.ctx)}}]),t}(),Vt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"clear",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:"killSVG",value:function(t){t.each((function(t,e){this.removeClass("*"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:"clearDomElements",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),jt=new WeakMap;var _t=function(){function t(e,i){a(this,t),this.opts=i,this.ctx=this,this.w=new F(i).init(),this.el=e,this.w.globals.cuid=x.randomId(),this.w.globals.chartID=this.w.config.chart.id?x.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Gt(this).initModules(),this.create=x.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return r(t,[{key:"render",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;if("function"==typeof a&&a(t,t.w),t.events.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();"none"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),jt.set(e,s)}(t.el.parentNode,t.parentResizeHandler),!t.css){var s=t.el.getRootNode&&t.el.getRootNode(),r=x.is("ShadowRoot",s),o=t.el.ownerDocument,n=o.getElementById("apexcharts-css");if(r||!n){var l;t.css=document.createElement("style"),t.css.id="apexcharts-css",t.css.textContent='@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-hidden-element-shown {\n opacity: 1;\n transition: 0.25s ease all;\n}\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-radialbar-label {\n cursor: pointer;\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n\n.apexcharts-bar-goals-markers{\n pointer-events: none\n}\n\n.apexcharts-bar-shadows{\n pointer-events: none\n}\n\n.apexcharts-rangebar-goals-markers{\n pointer-events: none\n}';var h=(null===(l=t.opts.chart)||void 0===l?void 0:l.nonce)||t.w.config.chart.nonce;h&&t.css.setAttribute("nonce",h),r?s.prepend(t.css):o.head.appendChild(t.css)}}var c=t.create(t.w.config.series,{});if(!c)return e(t);t.mount(c).then((function(){"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent("mounted",[t,t.w]),e(c)})).catch((function(t){i(t)}))}else i(new Error("Element not found"))}))}},{key:"create",value:function(t,e){var i=this.w;new Gt(this).initModules();var a=this.w.globals;(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(e),i.config.xaxis.convertedCatToNumeric)&&new X(i.config).convertCatToNumericXaxis(i.config,this.ctx);if(null===this.el)return a.animationEnded=!0,null;if(this.core.setupElements(),"treemap"===i.config.chart.type&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),0===a.svgWidth)return a.animationEnded=!0,null;var s=y.checkComboSeries(t);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=t.every((function(t){return t.data&&0===t.data.length}));(0===t.length||r)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(t),this.theme.init(),new H(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new y(this).getLargestMarkerSize(),this.dimensions.plotCoords();var o=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,o),l=new O(this);return l.bringForward(),i.config.dataLabels.background.enabled&&l.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:n,xyRatios:o,dimensions:{plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}}}}},{key:"mount",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new j(i);var o,n,l=i.grid.drawGrid();(i.annotations=new P(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position)&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(o=l.elGridBorders)&&void 0!==o&&o.node&&a.globals.dom.elGraphical.add(l.elGridBorders));if(Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){var t,e;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=jt.get(t))&&(e.disconnect(),jt.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===x.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Vt(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new U(this.ctx).getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new U(this.ctx).getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(t){return new G(this.ctx).dataURI(t)}},{key:"exportToCSV",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new G(this.ctx).exportToCSV(t)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:"_windowResizeHandler",value:function(){var t=this.w.config.chart.redrawOnWindowResize;"function"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:"getChartByID",value:function(t){var e=x.escapeString(t);if(Apex._chartInstances){var i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),o=2;o { + this._safeRender(); + }); + + // Re-render when props change (VERY IMPORTANT) + onWillUpdateProps(() => { + this._safeRender(); + }); + + // Cleanup + onWillUnmount(() => { + this._destroyChart(); + }); + } + + /* ----------------------------------------- + SAFE RENDER WRAPPER + ----------------------------------------- */ + _safeRender() { + // Always destroy before re-render + this._destroyChart(); + + // Let child decide whether data is valid + if (typeof this.renderChart === "function") { + this.renderChart(); + } + } + + /* ----------------------------------------- + CHILD IMPLEMENTS THIS + ----------------------------------------- */ + renderChart() { + // implemented in child + } + + /* ----------------------------------------- + DESTROY + ----------------------------------------- */ + _destroyChart() { + if (this.chart) { + try { + this.chart.destroy(); + } catch (e) { + // silently ignore ApexCharts internal errors + } + this.chart = null; + } + } +} diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.js b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.js new file mode 100644 index 000000000..231d46ade --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.js @@ -0,0 +1,218 @@ +/** @odoo-module **/ + +import { Component, useState, useRef, onMounted, onWillUpdateProps } from "@odoo/owl"; + +export class InventoryFlowChart extends Component { + setup() { + super.setup(); + + this.state = useState({ + selectedCategories: [], + selectedLocations: [], + isLoading: false, + data: null + }); + + this.chartRef = useRef("chart"); + this.chart = null; + + onMounted(() => { + this.loadData(); + }); + + onWillUpdateProps((nextProps) => { + if (nextProps.inventoryData !== this.props.inventoryData) { + this.loadData(); + } + }); + } + + async loadData() { + this.state.isLoading = true; + try { + // If inventoryData is passed as prop, use it + if (this.props.inventoryData) { + this.state.data = this.props.inventoryData; + } else { + // Otherwise fetch directly + const data = await this.props.rpc('/aui/dashboard/inventory_flow', { + category_ids: this.state.selectedCategories, + location_ids: this.state.selectedLocations + }); + this.state.data = data; + } + this.renderChart(); + } catch (error) { + console.error('Error loading inventory data:', error); + this.state.data = null; + } finally { + this.state.isLoading = false; + } + } + + renderChart() { + if (!this.state.data || !this.state.data.links || this.state.data.links.length === 0) { + this.renderNoData(); + return; + } + + if (!window.echarts) { + console.error('ECharts not loaded'); + return; + } + + // Destroy existing chart + if (this.chart) { + this.chart.dispose(); + this.chart = null; + } + + if (!this.chartRef.el) return; + + // Initialize echarts + this.chart = echarts.init(this.chartRef.el); + + const option = { + tooltip: { + trigger: 'item', + triggerOn: 'mousemove', + formatter: (params) => { + if (params.dataType === 'edge') { + const link = this.state.data.links[params.dataIndex]; + return ` +
+
+ ${link.product} +
+
+ ${link.move_name} +
+
+
From:
+
${link.source}
+
To:
+
${link.target}
+
Quantity:
+
+ ${link.value} ${link.uom || 'units'} +
+
Date:
+
${link.date || 'N/A'}
+
+
+ `; + } + return `${params.name}`; + } + }, + series: [{ + type: 'sankey', + layout: 'none', + data: this.state.data.nodes.map((node, index) => ({ + name: node.name, + itemStyle: { + color: this.getColorForNode(node.name) + } + })), + links: this.state.data.links.map(link => ({ + source: link.source, + target: link.target, + value: link.value + })), + emphasis: { + focus: 'adjacency' + }, + lineStyle: { + color: 'source', + curveness: 0.2 + }, + label: { + color: '#374151', + fontSize: 11, + formatter: (params) => { + if (params.name.length > 20) { + return params.name.substring(0, 20) + '...'; + } + return params.name; + } + }, + nodeGap: 15, + draggable: true + }], + animation: true, + animationDuration: 1000, + animationEasing: 'cubicOut' + }; + + this.chart.setOption(option); + + // Handle resize + window.addEventListener('resize', () => { + if (this.chart) { + this.chart.resize(); + } + }); + + // Handle container resize + const observer = new ResizeObserver(() => { + if (this.chart) { + this.chart.resize(); + } + }); + observer.observe(this.chartRef.el); + } + + getColorForNode(nodeName) { + const colors = [ + '#3b82f6', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6', + '#ec4899', '#14b8a6', '#f97316', '#84cc16', '#06b6d4' + ]; + + let hash = 0; + for (let i = 0; i < nodeName.length; i++) { + hash = nodeName.charCodeAt(i) + ((hash << 5) - hash); + } + + return colors[Math.abs(hash) % colors.length]; + } + + renderNoData() { + if (!this.chartRef.el) return; + + this.chartRef.el.innerHTML = ` +
+ +
No inventory movements found
+
Try changing your filter selections or checking stock moves
+
+ `; + } + + toggleCategory(categoryId) { + const index = this.state.selectedCategories.indexOf(categoryId); + if (index === -1) { + this.state.selectedCategories.push(categoryId); + } else { + this.state.selectedCategories.splice(index, 1); + } + this.loadData(); + } + + toggleLocation(locationId) { + const index = this.state.selectedLocations.indexOf(locationId); + if (index === -1) { + this.state.selectedLocations.push(locationId); + } else { + this.state.selectedLocations.splice(index, 1); + } + this.loadData(); + } + + clearFilters() { + this.state.selectedCategories = []; + this.state.selectedLocations = []; + this.loadData(); + } +} + +InventoryFlowChart.template = "aui.InventoryFlowChart"; \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.xml b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.xml new file mode 100644 index 000000000..c7ed725f3 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/inventory_charts/inventory_flow.xml @@ -0,0 +1,131 @@ + +
+ +
+

Inventory Material Flow

+ +
+ + + + + + + + + + +
+
+ + +
+ +
+ +
Loading inventory flow...
+
+
+
+ + + +
+
+
+
+ Flow direction (source → destination) +
+
+
+ Location/Node +
+
+ + Drag nodes to rearrange • Hover for details +
+
+
+
+
+ + +
\ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.js b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.js new file mode 100644 index 000000000..5db8067d5 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.js @@ -0,0 +1,84 @@ +/** @odoo-module **/ + +import { Component, onMounted, useRef } from "@odoo/owl"; + +export class KPICard extends Component { + setup() { + this.chartRef = useRef("chart"); + this.chart = null; + + onMounted(() => { + if (this.props.showChart) { + this.renderMiniChart(); + } + if (this.props.showExpenseChart && this.props.expenseData) { + this.renderExpenseMiniChart(); + } + }); + } + + formatAmount(value) { + return new Intl.NumberFormat("en-IN").format(value || 0); + } + + renderMiniChart() { + this.chart = new ApexCharts(this.chartRef.el, { + chart: { + type: "donut", + height: 80, + sparkline: { enabled: true }, + }, + series: [this.props.percent || 0, 100 - (this.props.percent || 0)], + colors: [this.props.color, "#E5E7EB"], + dataLabels: { enabled: false }, + legend: { show: false }, + plotOptions: { + pie: { + donut: { + size: "70%", + }, + }, + }, + }); + this.chart.render(); + } + + + renderExpenseMiniChart() { + const { labels, series } = this.props.expenseData; + + this.chart = new ApexCharts(this.chartRef.el, { + chart: { + type: "donut", + height: 80, + sparkline: { enabled: true }, + }, + labels: labels, + series: series, + dataLabels: { enabled: false }, + legend: { show: false }, + tooltip: { + y: { + formatter: (v) => `₹${this.formatAmount(v)}`, + }, + }, + plotOptions: { + pie: { + donut: { size: "70%" }, + }, + }, + }); + + this.chart.render(); + } + + onClick() { + if (this.props.onClick) { + this.props.onClick(); + } + } + + +} + +KPICard.template = "aui.KPICard"; diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.xml b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.xml new file mode 100644 index 000000000..81f799143 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/charts/kpi/kpi_card.xml @@ -0,0 +1,36 @@ + +
+ +
+
+ + + + + + + +
+ + + +
+ +
+
+ ₹ +
+ +
+
+
+
+ + + +
+ diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.js b/demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.js new file mode 100644 index 000000000..893f03c8f --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.js @@ -0,0 +1,116 @@ +/** @odoo-module **/ + +import { Component, useState, onMounted } from "@odoo/owl"; +import { registry } from "@web/core/registry"; +import { useService } from "@web/core/utils/hooks"; + +import { OverviewTab } from "../tabs/overview/overview_tab"; +import { SalesTab } from "../tabs/sales/sales_tab"; +import { rpc } from "@web/core/network/rpc"; + +export class AUIDashboard extends Component { + static template = "aui_custom_dashboards.aui_dashboard_template" + setup() { + super.setup(); + this.orm = useService("orm"); + this.rpc = rpc; + + // Initialize ALL data properties upfront + this.state = useState({ + loading: true, + error: null, + section: "overview", + data: { + overview: null, + purchase_data: null, + workOrderStatus: { + categories: [], + series: [], + }, + finishedGoods: { + categories: [], + series: [], + }, + rawMaterial: { + categories: [], + series: [], + }, + workOrderAnalysis: null, // Initialize as null, not empty object + inventoryFlow: null, + inventoryHeatmap: null, + }, + }); + + onMounted(() => this.loadData()); + } + + async loadData() { + this.state.loading = true; + + try { + // Load data in parallel for better performance + const [ + overview, + purchaseData, + workOrderStatus, + finishedGoods, + rawMaterial, + workOrderAnalysis, + inventoryFlow, + inventoryHeatmap + ] = await Promise.all([ + this.rpc("/aui/dashboard/overview", {}), + this.rpc("/aui/dashboard/purchase_vendor_product_stacked", {}), + this.rpc("/aui/dashboard/work_order_status", {}), + this.rpc("/aui/dashboard/finished_goods_output", {}), + this.rpc("/aui/dashboard/raw_material_consumption", {}), + this.rpc("/aui/dashboard/work_order_analysis", {}), + this.rpc("/aui/dashboard/inventory_flow", {}), + this.rpc("/aui/dashboard/inventory_heatmap", {}) + ]); + + // Update state all at once for better reactivity + this.state.data = { + overview: overview, + purchase_data: purchaseData, + workOrderStatus: workOrderStatus || { categories: [], series: [] }, + finishedGoods: finishedGoods || { categories: [], series: [] }, + rawMaterial: rawMaterial || { categories: [], series: [] }, + workOrderAnalysis: workOrderAnalysis, + inventoryFlow: inventoryFlow, + inventoryHeatmap: inventoryHeatmap + }; + + console.log('Dashboard Data Loaded:', this.state.data); + console.log('Work Order Analysis:', this.state.data.workOrderAnalysis); + + } catch (error) { + this.state.error = error; + console.error('Error loading dashboard data:', error); + } finally { + this.state.loading = false; + } + } + + switchSection(section) { + this.state.section = section; + } + + openAction(model, domain) { + this.env.services.action.doAction({ + type: "ir.actions.act_window", + name: model, + res_model: model, + view_mode: "list,form", + domain: domain, + }); + } + +} + +AUIDashboard.components = { + OverviewTab, + SalesTab, +}; + +registry.category("actions").add("aui_dashboard", AUIDashboard); \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.xml b/demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.xml new file mode 100644 index 000000000..a467e5671 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/dashboard/aui_dashboard.xml @@ -0,0 +1,62 @@ + + + +
+ + + + + + + + + + + + + + + + + + +
+ + +
+
AUI Dashboard
+ +
+ +
+
+ + +
+ + + + + + + +
+ +
+
+ +
+ +
diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.js b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.js new file mode 100644 index 000000000..eff506973 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.js @@ -0,0 +1,1177 @@ +/** @odoo-module **/ + +import { Component, useRef, onMounted, onWillUnmount, onWillUpdateProps, useState} from "@odoo/owl"; +import { KPICard } from "../../charts/kpi/kpi_card"; +import { InventoryFlowChart } from "../../charts/inventory_charts/inventory_flow"; + +export class OverviewTab extends Component { + setup() { + super.setup(); + + this.state = useState({ + groupBy: 'work_order', // 'work_order' or 'subcontractor' + showStacked: false, // false = separate bars, true = stacked bars + showInwardDetails: true, + selectedSubcontractors: [], // Array of selected subcontractor names + searchTerm: '', + +// selectedInventoryCategories: [], +// selectedInventoryLocations: [], +// inventoryViewType: 'heatmap', + }); + + console.log('OverviewTab Setup - Props:', this.props); + console.log('WorkOrderAnalysis in props:', this.props.workOrderAnalysis); + + // Refs for all charts + this.purchaseChartRef = useRef("purchaseChart"); + this.salesChartRef = useRef("salesChart"); + this.workOrderStatusChartRef = useRef("workOrderStatusChart"); + this.finishedGoodsChartRef = useRef("finishedGoodsChart"); + this.rawMaterialChartRef = useRef("rawMaterialChart"); + this.workOrderAnalysisChartRef = useRef("workOrderAnalysisChart"); +// this.inventoryChartRef = useRef("inventoryChart"); + // Chart instances storage + this.charts = { + purchase: null, + sales: null, + workOrderStatus: null, + finishedGoods: null, + rawMaterial: null, + workOrderAnalysis: null, +// inventory: null + }; + + // Mount/update lifecycle + onMounted(() => { + console.log('OverviewTab Mounted - Props:', this.props); + this.renderAllCharts(); + }); + + onWillUpdateProps((nextProps) => { + console.log('OverviewTab Props Will Update:', { + current: this.props, + next: nextProps, + workOrderAnalysisChanged: this.props.workOrderAnalysis !== nextProps.workOrderAnalysis + }); + this.destroyAllCharts(); + this.renderAllCharts(); + }); + + onWillUnmount(() => { + this.destroyAllCharts(); + }); + } + + /* ----------------------------------------- + CHART RENDERING METHODS + ----------------------------------------- */ + + renderAllCharts() { + this.renderPurchaseChart(); + this.renderSalesChart(); + this.renderWorkOrderStatusChart(); + this.renderFinishedGoodsChart(); + this.renderRawMaterialChart(); + this.renderWorkOrderAnalysisChart(); +// this.renderInventoryChart(); + } + + destroyAllCharts() { + Object.values(this.charts).forEach(chart => { + if (chart) { + try { + chart.destroy(); + } catch (e) { + // Silently ignore destruction errors + } + } + }); + this.charts = { + purchase: null, + sales: null, + workOrderStatus: null, + finishedGoods: null, + rawMaterial: null, + workOrderAnalysis: null, + inventory: null// Add this line + }; + // Clean up custom tooltip + const customTooltip = document.querySelector('.custom-apex-tooltip'); + if (customTooltip) { + customTooltip.remove(); + } + } + + renderInventoryChart() { + const inventoryHeatmap = this.props.inventoryHeatmap || {}; + + const heatmapData = Array.isArray(inventoryHeatmap.data) + ? inventoryHeatmap.data + : []; + + const locations = Array.isArray(inventoryHeatmap.locations) + ? inventoryHeatmap.locations + : []; + + const categories = Array.isArray(inventoryHeatmap.categories) + ? inventoryHeatmap.categories + : []; + + // Guard: nothing ready yet + if (!heatmapData.length || !locations.length || !categories.length) { + this.renderNoInventoryData(); + return; + } + + // Build full grid (location × category) + const series = locations.map(location => ({ + name: location, + data: categories.map(category => { + const cell = heatmapData.find( + d => d.location === location && d.category === category + ) || { + value: 0, + intensity: 0, + product_count: 0, + }; + + return { + x: category, + y: location, + value: cell.intensity, + rawQty: cell.value, + products: cell.product_count, + }; + }), + })); + + const options = { + chart: { + type: 'heatmap', + height: 500, + }, + series, + plotOptions: { + heatmap: { + colorScale: { + ranges: [ + { from: 0, to: 10, name: 'Low', color: '#bfdbfe' }, + { from: 10, to: 30, name: 'Medium', color: '#60a5fa' }, + { from: 30, to: 60, name: 'High', color: '#2563eb' }, + { from: 60, to: 90, name: 'Very High', color: '#1e40af' }, + { from: 90, to: 100, name: 'Critical', color: '#1e3a8a' }, + ], + }, + }, + }, + dataLabels: { + enabled: true, + formatter: (_, opts) => { + const d = opts.w.config.series[opts.seriesIndex].data[opts.dataPointIndex]; + return d.rawQty ? Math.round(d.rawQty) : ''; + }, + }, + tooltip: { + custom: ({ seriesIndex, dataPointIndex, w }) => { + const d = w.config.series[seriesIndex].data[dataPointIndex]; + return ` +
+ ${d.y}
+ ${d.x}
+ Qty: ${Math.round(d.rawQty)}
+ Products: ${d.products} +
+ `; + }, + }, + xaxis: { categories }, + yaxis: { categories: locations }, + }; + + // Destroy previous chart safely + if (this.charts.inventory) { + this.charts.inventory.destroy(); + } + + this.charts.inventory = new ApexCharts(this.inventoryChartRef.el, options); + this.charts.inventory.render(); + } + + + // Add this fallback method + renderInventoryAsTable(data) { + if (!this.inventoryChartRef.el) return; + + const tableRows = data.map(item => ` + + ${item.category} + ${item.location} + ${item.value} + ${item.product_count || 1} + + `).join(''); + + this.inventoryChartRef.el.innerHTML = ` +
+ + + + + + + + + + + ${tableRows} + +
CategoryLocationQuantityProducts
+
+ `; + } + + filterInventoryData(inventoryData) { + let filtered = { + data: inventoryData.data || [], + filters: inventoryData.filters || {} + }; + + // Apply category filter + if (this.state.selectedInventoryCategories.length > 0) { + filtered.data = filtered.data.filter(item => + this.state.selectedInventoryCategories.includes(item.category) + ); + } + + // Apply location filter + if (this.state.selectedInventoryLocations.length > 0) { + filtered.data = filtered.data.filter(item => + this.state.selectedInventoryLocations.includes(item.location) + ); + } + + return filtered; + } + + renderNoInventoryData() { + if (!this.inventoryChartRef.el) return; + + this.inventoryChartRef.el.innerHTML = ` +
+ +
No Inventory Data Available
+
+ Add products to locations or create stock moves to see inventory heatmap +
+
+ `; + } + + // Inventory filter methods + toggleInventoryCategory(categoryName) { + const index = this.state.selectedInventoryCategories.indexOf(categoryName); + if (index === -1) { + this.state.selectedInventoryCategories.push(categoryName); + } else { + this.state.selectedInventoryCategories.splice(index, 1); + } + this.renderInventoryChart(); + } + + toggleInventoryLocation(locationName) { + const index = this.state.selectedInventoryLocations.indexOf(locationName); + if (index === -1) { + this.state.selectedInventoryLocations.push(locationName); + } else { + this.state.selectedInventoryLocations.splice(index, 1); + } + this.renderInventoryChart(); + } + + clearInventoryFilters() { + this.state.selectedInventoryCategories = []; + this.state.selectedInventoryLocations = []; + this.renderInventoryChart(); + } + + toggleInventoryView(viewType) { + this.state.inventoryViewType = viewType; + this.renderInventoryChart(); + } + + onChangeViewType(isStacked) { + this.state.showStacked = isStacked; + this.renderWorkOrderAnalysisChart(); + } + + // Add these methods to your class + toggleSubcontractorFilter(subcontractorName) { + const index = this.state.selectedSubcontractors.indexOf(subcontractorName); + if (index === -1) { + this.state.selectedSubcontractors.push(subcontractorName); + } else { + this.state.selectedSubcontractors.splice(index, 1); + } + this.renderWorkOrderAnalysisChart(); + } + + clearFilters() { + this.state.selectedSubcontractors = []; + this.state.searchTerm = ''; + this.renderWorkOrderAnalysisChart(); + } + + // Toggle grouping method + toggleGroupBy(groupBy) { + this.state.groupBy = groupBy; + this.renderWorkOrderAnalysisChart(); + } + + // Toggle chart type method + toggleChartType() { + this.state.showStacked = !this.state.showStacked; + this.renderWorkOrderAnalysisChart(); + } + + renderWorkOrderAnalysisChart() { + const { workOrderAnalysis } = this.props; + const { groupBy, showStacked } = this.state; + + console.log('Rendering Work Order Analysis Chart with:', { groupBy, showStacked }); + + if (!workOrderAnalysis || !workOrderAnalysis.series || !workOrderAnalysis.categories) { + console.log('Missing workOrderAnalysis data'); + return; + } + + if (!this.workOrderAnalysisChartRef.el) { + console.log('Chart ref element not found'); + return; + } + + try { + // Destroy existing chart first + if (this.charts.workOrderAnalysis) { + try { + this.charts.workOrderAnalysis.destroy(); + } catch (e) { + console.warn('Error destroying existing chart:', e); + } + } + + // Process data based on grouping + let processedData = this.processDataForGrouping(workOrderAnalysis, groupBy); + + if (!processedData || !processedData.categories || processedData.categories.length === 0) { + console.log('No data to display after processing'); + + // Clear the chart area or show a message + if (this.workOrderAnalysisChartRef.el) { + this.workOrderAnalysisChartRef.el.innerHTML = ` +
+ +
No data matches your filters
+
Try changing your filter selections
+
+ `; + } + return; + } + + const allValues = processedData.series.flatMap(s => s.data); + const maxValue = showStacked ? Math.max(...allValues) * 2 : Math.max(...allValues); + const yAxisMax = Math.ceil(maxValue * 1.15); + // Prepare data with custom data labels + const series = processedData.series.map((s, index) => ({ + name: s.name, + type: 'column', + data: s.data.map((value, dataIndex) => { + const detailedData = processedData.detailed_data[dataIndex]; + let customLabel = ''; + + if (index === 0) { // Raw Material Used + customLabel = `${value} kg`; + } else if (index === 1) { // Finished Goods - show both weight and units + const units = detailedData?.finished_goods_units || 0; + customLabel = `${value} kg\n(${units} ut)`; + } else if (index === 2) { // Scrap + customLabel = `${value} kg`; + } + + return { + x: processedData.categories[dataIndex], + y: value, + customLabel: customLabel, + detailedData: detailedData + }; + }) + })); + + // Create chart configuration + const chartOptions = { + // Replace the chart and tooltip sections in chartOptions: + chart: { + type: 'bar', + height: 500, + stacked: showStacked, + toolbar: { + show: true, + tools: { + download: true, + selection: true, + zoom: true, + zoomin: true, + zoomout: true, + pan: true, + reset: true + } + }, + animations: { + enabled: true, + easing: 'easeinout', + speed: 600 + }, + events: { + mounted: (chartContext, config) => { + console.log('Chart mounted successfully'); + }, + updated: (chartContext, config) => { + console.log('Chart updated successfully'); + } + } + }, + series: series, + plotOptions: { + bar: { + horizontal: false, + columnWidth: showStacked ? '60%' : '40%', + borderRadius: 4, + borderRadiusApplication: 'end', + dataLabels: { + position: showStacked ? "center" : "top", + formatter: function(val, opts) { + const pointData = opts.w.config.series[opts.seriesIndex].data[opts.dataPointIndex]; + return pointData.customLabel || val; + }, + hideOverflowingLabels: false + } + } + }, + dataLabels: { + enabled: true, + formatter: function(val, opts) { + const pointData = opts.w.config.series[opts.seriesIndex].data[opts.dataPointIndex]; + return pointData.customLabel || val; + }, + style: { + fontSize: '10px', + fontWeight: 600, + colors: ['#1F2937'] + }, + offsetY: showStacked ? 0 : -12, + background: { + enabled: false + }, + dropShadow: { + enabled: true, + top: 1, + left: 1, + blur: 1, + opacity: 0.45 + } + }, + stroke: { + width: 2, + colors: ['#fff'] + }, + xaxis: { + categories: processedData.categories, + labels: { + style: { + fontSize: '11px', + fontWeight: 500, + colors: '#4B5563' + }, + formatter: function(value) { + // ADD NULL CHECK + if (!value) return ''; + + // Truncate long labels + if (value.length > 15) { + return value.substring(0, 15) + '...'; + } + return value; + } + }, + tickAmount: 10, // Show only 10 labels at a time + // Enable horizontal scrolling + type: 'category', + tickPlacement: 'between', + axisBorder: { + show: true, + color: '#E5E7EB' + }, + axisTicks: { + show: true, + color: '#E5E7EB' + }, + title: { + text: groupBy === 'subcontractor' ? 'Subcontractors' : 'Work Orders', + style: { + fontSize: '14px', + fontWeight: 600, + color: '#374151' + } + } + }, + zoom: { + enabled: true, + type: 'x', + autoScaleYaxis: true + }, + pan: { + enabled: true, + type: 'x' + }, + yaxis: { + min:0, + max: yAxisMax, + tickAmount: 6, + title: { + text: 'Weight (kg)', + style: { + fontSize: '14px', + fontWeight: 600, + color: '#374151' + } + }, + labels: { + formatter: val => { + const num = Number(val.toFixed(2)); + return Number.isInteger(num) ? `${num} kg` : `${num} kg`; + }, + style: { + fontSize: '12px', + colors: '#6B7280' + } + }, + grid: { + borderColor: '#E5E7EB', + padding: { + top: 30, // ✅ label breathing space + right: 20, // ✅ last bar not cut + left: 20, // ✅ first bar not cut + bottom: 10, + }, + }, + legend: { + position: "top", + horizontalAlign: "center", + fontSize: "12px", + }, + + colors: ["#3B82F6", "#10B981", "#EF4444"], + + tooltip: { + shared: true, + intersect: false, + }, + }, + tooltip: { + enabled: true, + shared: true, + intersect: false, + custom: ({ series, seriesIndex, dataPointIndex, w }) => { + const pointData = w.config.series[seriesIndex].data[dataPointIndex]; + if (!pointData || !pointData.detailedData) { + return ''; + } + + const data = pointData.detailedData; + const isSubcontractorView = groupBy === 'subcontractor'; + + // Build tooltip content + return this.buildTooltipContent(data, isSubcontractorView); + } + }, + colors: ['#3B82F6', '#10B981', '#EF4444'], // Blue, Green, Red + legend: { + position: 'top', + horizontalAlign: 'center', + fontSize: '12px', + fontWeight: 600, + itemMargin: { + horizontal: 15, + vertical: 8 + }, + markers: { + width: 10, + height: 10, + radius: 5 + } + }, + grid: { + borderColor: '#F3F4F6', + strokeDashArray: 4, + padding: { + top: 20, + right: 10, + bottom: 0, + left: 10 + } + }, + fill: { + opacity: 0.85 + }, + responsive: [ + { + breakpoint: 1024, + options: { + chart: { + height: 450 + }, + plotOptions: { + bar: { + columnWidth: showStacked ? '70%' : '50%' + } + }, + dataLabels: { + style: { + fontSize: '9px' + } + } + } + }, + { + breakpoint: 768, + options: { + chart: { + height: 400 + }, + xaxis: { + labels: { + rotate: -45, + style: { + fontSize: '9px' + } + } + }, + legend: { + position: 'bottom' + } + } + } + ] + }; + + console.log('Creating chart with options:', chartOptions); + + this.charts.workOrderAnalysis = new ApexCharts( + this.workOrderAnalysisChartRef.el, + chartOptions + ); + + this.charts.workOrderAnalysis.render().then(() => { + console.log('Work Order Analysis Chart rendered successfully'); + }).catch((error) => { + console.error('Error rendering chart:', error); + }); + + } catch (error) { + console.error('Error in renderWorkOrderAnalysisChart:', error); + } + } + + filterBySubcontractors(data) { + // Filter detailed_data by selected subcontractors + const filteredDetails = data.detailed_data.filter(detail => + this.state.selectedSubcontractors.includes(detail.subcontractor) + ); + + // Get indices of filtered items + const filteredIndices = filteredDetails.map((_, idx) => idx); + + // Filter series data + const filteredSeries = data.series.map(series => ({ + name: series.name, + data: series.data.filter((_, idx) => filteredIndices.includes(idx)) + })); + + // Filter categories + const filteredCategories = data.categories.filter((_, idx) => + filteredIndices.includes(idx) + ); + + return { + series: filteredSeries, + categories: filteredCategories, + detailed_data: filteredDetails + }; + } + // Process data based on grouping option + processDataForGrouping(workOrderAnalysis, groupBy) { + let filteredData = workOrderAnalysis; + + // Apply subcontractor filter + if (this.state.selectedSubcontractors.length > 0) { + filteredData = this.filterBySubcontractors(workOrderAnalysis); + } + + // Apply search term filter if exists + if (this.state.searchTerm) { + filteredData = this.filterBySearchTerm(filteredData); + } + + // CRITICAL FIX: Use filteredData instead of workOrderAnalysis + if (groupBy === 'work_order') { + // Return filtered data (grouped by work order) + return { + series: filteredData.series, + categories: filteredData.categories, + detailed_data: filteredData.detailed_data + }; + } else { + // Group by subcontractor - use filtered data + const subcontractorData = {}; + + // CRITICAL FIX: Use filteredData.detailed_data instead of workOrderAnalysis.detailed_data + filteredData.detailed_data.forEach((detail, index) => { + const subcontractor = detail.subcontractor; + + if (!subcontractorData[subcontractor]) { + subcontractorData[subcontractor] = { + raw_material_used: 0, + finished_goods_weight: 0, + finished_goods_units: 0, + scrap: 0, + work_orders: [], + inward_details: [] + }; + } + + subcontractorData[subcontractor].raw_material_used += detail.raw_material_used; + subcontractorData[subcontractor].finished_goods_weight += detail.finished_goods_weight; + subcontractorData[subcontractor].finished_goods_units += detail.finished_goods_units; + subcontractorData[subcontractor].scrap += detail.scrap; + subcontractorData[subcontractor].work_orders.push(detail.work_order); + + if (detail.inward_details) { + subcontractorData[subcontractor].inward_details.push(...detail.inward_details); + } + }); + + // Prepare series data for subcontractor grouping + const categories = Object.keys(subcontractorData); + + // CRITICAL FIX: Check if categories array is empty + if (categories.length === 0) { + console.log('No data after filtering'); + return { + series: [], + categories: [], + detailed_data: [] + }; + } + + const series = [ + { + name: 'Raw Material Used (kg)', + data: categories.map(sub => subcontractorData[sub].raw_material_used) + }, + { + name: 'Finished Goods Weight (kg)', + data: categories.map(sub => subcontractorData[sub].finished_goods_weight) + }, + { + name: 'Scrap/Difference (kg)', + data: categories.map(sub => subcontractorData[sub].scrap) + } + ]; + + const detailed_data = categories.map(sub => ({ + work_order: subcontractorData[sub].work_orders.join(', '), + subcontractor: sub, + raw_material_used: subcontractorData[sub].raw_material_used, + finished_goods_weight: subcontractorData[sub].finished_goods_weight, + finished_goods_units: subcontractorData[sub].finished_goods_units, + scrap: subcontractorData[sub].scrap, + yield_percentage: (subcontractorData[sub].finished_goods_weight / subcontractorData[sub].raw_material_used * 100) || 0, + status: 'summary', + inward_details: subcontractorData[sub].inward_details + })); + + return { + series: series, + categories: categories, + detailed_data: detailed_data + }; + } + } + + // Build tooltip content based on view + buildTooltipContent(data, isSubcontractorView) { + const workOrders = isSubcontractorView ? data.work_order.split(', ') : [data.work_order]; + + let workOrderListHTML = ''; + if (isSubcontractorView) { + workOrderListHTML = ` +
+
Work Orders:
+
+ ${workOrders.map(wo => ` + ${wo} + `).join('')} +
+
+ `; + } + + // In buildTooltipContent method, replace the inwardDetailsHTML section: + let inwardDetailsHTML = ''; + if (this.state.showInwardDetails && data.inward_details && data.inward_details.length > 0) { + const inwardItems = data.inward_details.map((inward, idx) => ` +
+
${inward.inward_name || `Inward ${idx + 1}`}
+
+
+
Raw Used:
+
${inward.raw_material_used} kg
+
+
+
FG Weight:
+
${inward.fg_weight} kg
+
+
+
Units:
+
${inward.fg_units}
+
+
+
Scrap:
+
${inward.scrap} kg
+
+
+
+ `).join(''); + + inwardDetailsHTML = ` +
+
+
Inward Details
+
+ ${data.inward_details.length} record${data.inward_details.length !== 1 ? 's' : ''} +
+
+
+ ${inwardItems} +
+ +
+ Scroll to see more details +
+
+ `; + } + + return ` +
+
+
+
+ ${isSubcontractorView ? data.subcontractor : data.work_order} +
+
+ ${isSubcontractorView ? `${workOrders.length} Work Order${workOrders.length > 1 ? 's' : ''}` : data.subcontractor} +
+
+ ${!isSubcontractorView ? ` +
+ ${data.status.toUpperCase()} +
+ ` : ''} +
+ + ${workOrderListHTML} + +
+
+
RAW USED
+
${data.raw_material_used} kg
+
+ +
+
FINISHED GOODS
+
${data.finished_goods_weight} kg
+
${data.finished_goods_units} units
+
+ +
+
SCRAP
+
${data.scrap} kg
+
+ +
+
YIELD
+
${data.yield_percentage.toFixed(1)}%
+
+
+ ${inwardDetailsHTML} +
+ `; + } + + + renderPurchaseChart() { + const { purchaseData } = this.props; + if (!purchaseData || !purchaseData.series || !purchaseData.categories) { + return; + } + + if (this.purchaseChartRef.el) { + this.charts.purchase = new ApexCharts(this.purchaseChartRef.el, { + chart: { + type: "bar", + height: 380, + stacked: true, + toolbar: { show: false }, + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: "55%", + borderRadius: 6, + }, + }, + dataLabels: { + enabled: false, + total: { + enabled: true, + style: { + fontSize: "13px", + fontWeight: 600, + color: "#0f172a", + }, + formatter: function (w) { + const totals = w.globals.stackedSeriesTotals; + const index = w.dataPointIndex; + return `₹${new Intl.NumberFormat("en-IN").format(totals[index])}`; + }, + }, + }, + series: purchaseData.series, + xaxis: { + categories: purchaseData.categories, + labels: { + style: { fontSize: "12px" }, + }, + }, + yaxis: { + labels: { + formatter: (val) => + `₹${new Intl.NumberFormat("en-IN").format(val)}`, + }, + }, + legend: { + position: "top", + horizontalAlign: "left", + markers: { radius: 4 }, + }, + tooltip: { + y: { + formatter: (val) => + `₹${new Intl.NumberFormat("en-IN").format(val)}`, + }, + }, + colors: [ + "#2563EB", "#16A34A", "#F97316", "#EF4444", "#8B5CF6", + ], + }); + + this.charts.purchase.render(); + } + } + + renderSalesChart() { + const { data } = this.props; + if (!data || !data.sales) { + return; + } + + if (this.salesChartRef.el) { + this.charts.sales = new ApexCharts(this.salesChartRef.el, { + chart: { + type: "donut", + height: 300, + toolbar: { show: false }, + }, + series: [data.sales], + labels: ['Sales Orders'], + dataLabels: { + enabled: false, + }, + legend: { + position: "bottom", + }, + stroke: { + width: 0, + }, + colors: ["#2563EB", "#16A34A"], + }); + + this.charts.sales.render(); + } + } + + renderWorkOrderStatusChart() { + const { workOrderStatus } = this.props; + if (!workOrderStatus || !workOrderStatus.series || !workOrderStatus.labels) { + return; + } + + // Filter valid data + const series = Array.isArray(workOrderStatus.series) + ? workOrderStatus.series.filter(v => typeof v === "number") + : []; + const labels = Array.isArray(workOrderStatus.labels) + ? workOrderStatus.labels + : []; + + if (!series.length || series.length !== labels.length) { + return; + } + + if (this.workOrderStatusChartRef.el) { + this.charts.workOrderStatus = new ApexCharts(this.workOrderStatusChartRef.el, { + chart: { + type: "donut", + height: 300, + toolbar: { show: false }, + }, + series: series, + labels: labels, + dataLabels: { + enabled: false, + }, + legend: { + position: "bottom", + }, + stroke: { + width: 0, + }, + colors: ["#2563EB", "#16A34A", "#F97316", "#EF4444", "#8B5CF6"], + }); + + this.charts.workOrderStatus.render(); + } + } + + renderFinishedGoodsChart() { + const { finishedGoods } = this.props; + if (!finishedGoods || !finishedGoods.series || !finishedGoods.categories) { + return; + } + + if (this.finishedGoodsChartRef.el) { + this.charts.finishedGoods = new ApexCharts(this.finishedGoodsChartRef.el, { + chart: { + type: "bar", + height: 380, + toolbar: { show: false }, + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: "55%", + borderRadius: 6, + }, + }, + dataLabels: { + enabled: false, + }, + series: finishedGoods.series, + xaxis: { + categories: finishedGoods.categories, + labels: { + style: { fontSize: "12px" }, + }, + }, + yaxis: { + labels: { + formatter: (val) => + `${new Intl.NumberFormat("en-IN").format(val)} units`, + }, + }, + legend: { + position: "top", + horizontalAlign: "left", + markers: { radius: 4 }, + }, + tooltip: { + y: { + formatter: (val) => + `${new Intl.NumberFormat("en-IN").format(val)} units`, + }, + }, + colors: [ + "#2563EB", "#16A34A", "#F97316", "#EF4444", "#8B5CF6", + ], + }); + + this.charts.finishedGoods.render(); + } + } + + renderRawMaterialChart() { + const { rawMaterial } = this.props; + if (!rawMaterial || !rawMaterial.series || !rawMaterial.labels) { + return; + } + + // Filter valid data + const series = Array.isArray(rawMaterial.series) + ? rawMaterial.series.filter(v => typeof v === "number") + : []; + const labels = Array.isArray(rawMaterial.labels) + ? rawMaterial.labels + : []; + + if (!series.length || series.length !== labels.length) { + return; + } + + if (this.rawMaterialChartRef.el) { + this.charts.rawMaterial = new ApexCharts(this.rawMaterialChartRef.el, { + chart: { + type: "donut", + height: 300, + toolbar: { show: false }, + }, + series: series, + labels: labels, + dataLabels: { + enabled: false, + }, + legend: { + position: "bottom", + }, + stroke: { + width: 0, + }, + colors: ["#2563EB", "#16A34A", "#F97316", "#EF4444", "#8B5CF6"], + }); + + this.charts.rawMaterial.render(); + } + } + + /* ----------------------------------------- + HELPER METHODS + ----------------------------------------- */ + + formatAmount(value) { + return new Intl.NumberFormat("en-IN").format(value || 0); + } +} + +OverviewTab.components = { KPICard, InventoryFlowChart }; +OverviewTab.template = "aui.OverviewTab"; \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.xml b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.xml new file mode 100644 index 000000000..809179775 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/overview_tab.xml @@ -0,0 +1,450 @@ + +
+
+
+ + + + + + + +
+ +
+
+
+

Work Order Material Analysis

+
+ +
+ Group by: +
+ + +
+
+ + +
+ View: +
+ + +
+
+ + +
+ Filter: +
+ + + + + + +
+
+ + +
+
+
+ Raw Material +
+
+
+ Finished Goods +
+
+
+ Scrap +
+
+
+
+ + + +
+ + +
+ +
No Work Order Data + Available +
+
Create work orders and inward receipts to see + analysis +
+
+
+ +
+ +
Loading Work Order Analysis...
+
+
+ + + +
+

Subcontractor Summary

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Subcontractor + + Work Orders + + Total Raw Used + + Total FG Weight + + Total FG Units + + Total Scrap + + Yield % +
+ + + + + + kg + + + kg + + + ut + + + kg + + + + + % + + N/A + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Vendor-wise Product Purchase Cost

+ +
+ + +
No purchase data available
+
+
+ +
+

Sales Summary

+ +
+ + +
No sales data available
+
+
+
+ +
+
+

Work Order Status

+ +
+ + +
No work order status data available
+
+
+ +
+

Finished Goods Output

+ +
+ + +
No finished goods data available
+
+
+
+ +
+
+

Raw Material Consumption

+ +
+ + +
No raw material data available
+
+
+
+ +
+
+ + + diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/work_order_analysis.xml b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/work_order_analysis.xml new file mode 100644 index 000000000..1266ca5cf --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/overview/work_order_analysis.xml @@ -0,0 +1,101 @@ + +
+ +
+
+
+ + +
+
+ + Work Orders + + + + +
+
+ +
+ +
+
+
+ + + +
+ +
+ + + + + +
+
+
+ + +
+
+
RAW USED
+
kg
+
+
+
FINISHED GOODS
+
kg
+
units
+
+
+
SCRAP
+
kg
+
+
+
YIELD
+
%
+
+
+ + + +
+
+
Inward Details
+
+ records +
+
+
+ +
+
+ +
+
+
+
Raw Used:
+
kg
+
+
+
FG Weight:
+
kg
+
+
+
Units:
+
+
+
+
Scrap:
+
kg
+
+
+
+
+
+
Scroll to see more details
+
+
+
+
\ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.js b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.js new file mode 100644 index 000000000..6fba92cc4 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.js @@ -0,0 +1,8 @@ +/** @odoo-module **/ + +import { Component } from "@odoo/owl"; + +export class SalesTab extends Component {} + +SalesTab.components = { }; +SalesTab.template = "aui.SalesTab"; diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.xml b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.xml new file mode 100644 index 000000000..64926dca9 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/components/tabs/sales/sales_tab.xml @@ -0,0 +1,14 @@ + +
+ +
+

Sales Orders

+ + + + + +
+ +
+
diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/scss/aui_dashboard.scss b/demo_addons_modules/aui_custom_dashboards/static/src/scss/aui_dashboard.scss new file mode 100644 index 000000000..e64c43e84 --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/scss/aui_dashboard.scss @@ -0,0 +1,394 @@ +.aui-dashboard-root { + display: flex; + height: 100vh; + background: #f4f6f8; + font-family: Inter, sans-serif; +} + +/* ========================= + LEFT SIDEBAR +========================= */ +.aui-sidebar { + width: 220px; + background: #111827; /* dark slate */ + color: #e5e7eb; + display: flex; + flex-direction: column; + padding: 16px 0; +} + +.sidebar-item { + padding: 12px 20px; + cursor: pointer; + font-size: 14px; + transition: background 0.2s ease; +} + +.sidebar-item:hover { + background: #1f2937; +} + +.sidebar-item.active { + background: #2563eb; + color: #fff; +} + +/* ========================= + RIGHT CONTENT AREA +========================= */ +.aui-content { + flex: 1; + display: flex; + flex-direction: column; +} + +.aui-content main { + padding-top: 40px; + padding-bottom: 40px; + overflow-y: auto; +} + +/* ========================= + TOP FILTER BAR +========================= */ +.aui-topbar { + height: 56px; + background: #ffffff; + border-bottom: 1px solid #e5e7eb; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20px; +} + +.aui-topbar .title { + font-size: 18px; + font-weight: 600; + color: #111827; +} + +.aui-topbar .filters select { + padding: 6px 10px; + border-radius: 6px; + border: 1px solid #d1d5db; + font-size: 13px; +} + +/* ========================= + TAB CONTENT +========================= */ +.aui-tab { + padding: 20px; +} + +/* ========================= + CHART CARD +========================= */ +.aui-card { + background: #ffffff; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + box-shadow: 0 4px 25px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; +} +.aui-card:hover { + transform: translateY(-3px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1); +} + +.aui-card h3 { + margin-bottom: 12px; + font-size: 16px; + font-weight: 600; + color: #111827; +} + +@media (max-width: 768px) { + .aui-card { + padding:16px; + } +} + + +.aui-kpi-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 20px; + margin-bottom: 24px; +} + +.aui-kpi-card { + background: #ffffff; + border-radius: 14px; + padding: 16px 18px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06); +} + +.aui-kpi-header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.aui-kpi-title { + font-size: 13px; + font-weight: 600; + color: #475569; + display: flex; + align-items: center; + gap: 8px; /* 👈 spacing between icon and title */ +} + +.aui-kpi-icon { + color: #2563EB; /* 👈 blue (Tailwind blue-600) */ + font-size: 14px; +} + +.aui-kpi-title-text { + font-size: 13px; + font-weight: 600; + color: #475569; +} + + +.aui-kpi-badge { + font-size: 12px; + padding: 4px 10px; + border-radius: 999px; + background: #ECFDF5; + color: #10B981; +} + +.aui-kpi-body { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 12px; +} + +.aui-kpi-value { + font-size: 26px; + font-weight: 700; + color: #0f172a; +} + +.aui-kpi-footer { + margin-top: 6px; + font-size: 12px; + color: #64748B; +} + +/* ========================= + CHART GRID LAYOUT +========================= */ + +.aui-chart-grid { + display: grid; + gap: 20px; + margin-bottom: 24px; +} + +/* 1 chart per row */ +.aui-cols-1 { + grid-template-columns: 1fr; +} + +/* 2 charts per row */ +.aui-cols-2 { + grid-template-columns: repeat(2, 1fr); +} + +/* 3 charts per row */ +.aui-cols-3 { + grid-template-columns: repeat(3, 1fr); +} + +/* Responsive fallback */ +@media (max-width: 1024px) { + .aui-cols-3 { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 768px) { + .aui-cols-2, + .aui-cols-3 { + grid-template-columns: 1fr; + } +} + +/* Add these styles to your CSS file */ +.work-order-tooltip { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + line-height: 1.5; +} + +.apexcharts-tooltip { + border: 1px solid #E5E7EB !important; + border-radius: 8px !important; + box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1) !important; + background: white !important; + max-width: 400px !important; +} + +.apexcharts-data-labels text { + font-weight: 600 !important; + text-shadow: 0 1px 2px rgba(255, 255, 255, 0.8) !important; +} + +.apexcharts-legend { + padding: 10px 0 !important; +} + +.apexcharts-grid line { + stroke: #F3F4F6 !important; +} + +.no-data { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 300px; + color: #6B7280; + font-size: 14px; + background: #F9FAFB; + border-radius: 8px; + border: 2px dashed #D1D5DB; +} + +.loading-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 300px; + color: #6B7280; +} + +.aui-card table { + width: 100%; + border-collapse: collapse; +} + +.aui-card table th { + font-weight: 600; + color: #374151; + background: #F9FAFB; +} + +.aui-card table td, .aui-card table th { + padding: 8px 12px; + border-bottom: 1px solid #E5E7EB; +} + +.aui-card table tr:hover { + background: #F9FAFB; +} + +/* Add to your CSS file */ +.group-btn, .view-btn { + transition: all 0.2s ease; +} + +.group-btn.active, .view-btn.active { + background: #3B82F6 !important; + color: white !important; + font-weight: 600 !important; +} + +.group-btn:hover:not(.active), .view-btn:hover:not(.active) { + background: #F3F4F6 !important; +} + +.group-btn:first-child, .view-btn:first-child { + border-right: 1px solid #D1D5DB; +} + +/* Tooltip styles */ +.work-order-tooltip { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + line-height: 1.4; +} + +/* Chart styling */ +.apexcharts-bar-series path { + stroke-width: 1px; + stroke: rgba(255, 255, 255, 0.8); +} + +.apexcharts-data-labels text { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + font-weight: 600; +} + +/* Responsive table */ +@media (max-width: 768px) { + .aui-card table { + font-size: 11px; + } + + .aui-card table th, + .aui-card table td { + padding: 6px 8px; + } + + .chart-controls { + flex-direction: column; + gap: 10px; + } + + .chart-controls > div { + width: 100%; + } +} + +.filter-btn { + transition: all 0.2s; +} + +.filter-btn.active { + background: #3B82F6 !important; + color: white !important; + border-color: #3B82F6 !important; +} + +.filter-btn:hover:not(.active) { + background: #F3F4F6 !important; +} + +/* Fix tooltip positioning */ +.apexcharts-tooltip { + pointer-events: none; + z-index: 1000; +} + +/* Reduce spacing in chart */ +.apexcharts-grid { + padding: 10px !important; +} + +/* Fix bar spacing */ +.apexcharts-bar-area { + shape-rendering: crispEdges; +} + +/* Ensure labels are visible */ +.apexcharts-datalabels text { + text-shadow: 1px 1px 2px white, -1px -1px 2px white, + 1px -1px 2px white, -1px 1px 2px white; +} + + +.dropdown:hover .dropdown-menu { + display: block !important; +} + +.filter-btn:hover { + background-color: #f9fafb !important; +} + +.dropdown-menu label:hover { + background-color: #f3f4f6; +} \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/scss/dashboard.scss b/demo_addons_modules/aui_custom_dashboards/static/src/scss/dashboard.scss new file mode 100644 index 000000000..8b4c2e48c --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/scss/dashboard.scss @@ -0,0 +1,231 @@ +/* ========================================================= + AUI CUSTOM DASHBOARD – FULLY SCOPED & PROFESSIONAL + ========================================================= */ + +/* HARD SCOPE: NOTHING LEAKS OUTSIDE THIS DASHBOARD */ +.o_action_manager .aui-dashboard-root { + height: 100%; + display: flex; + flex-direction: column; + background: #f4f6f8; + font-family: Inter, Roboto, "Segoe UI", sans-serif; +} + +/* ========================================================= + TOP BAR + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .aui-dashboard-topbar { + height: 60px; + background: #ffffff; + border-bottom: 1px solid #e5e7eb; + padding: 0 24px; + display: flex; + align-items: center; + justify-content: space-between; + z-index: 5; + + .title { + font-size: 18px; + font-weight: 600; + color: #111827; + } + + .filters { + display: flex; + align-items: center; + gap: 10px; + + select { + padding: 6px 12px; + border-radius: 8px; + border: 1px solid #d1d5db; + background: #f9fafb; + font-size: 13px; + color: #374151; + outline: none; + cursor: pointer; + + &:hover { + background: #f3f4f6; + } + } + } + } +} + +/* ========================================================= + BODY LAYOUT + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .aui-dashboard-body { + flex: 1; + display: flex; + overflow: hidden; + } +} + +/* ========================================================= + LEFT SIDEBAR (DARK – PROFESSIONAL) + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .aui-sidebar { + width: 180px; + background: #1f2937; /* dark slate */ + color: #cbd5e1; + padding: 16px 12px; + display: flex; + flex-direction: column; + gap: 4px; + } + + .sidebar-item { + padding: 10px 14px; + border-radius: 8px; + cursor: pointer; + font-size: 14px; + transition: all 0.2s ease; + user-select: none; + + &:hover { + background: rgba(255, 255, 255, 0.08); + color: #ffffff; + } + + &.active { + background: linear-gradient(135deg, #2563eb, #1d4ed8); + color: #ffffff; + font-weight: 600; + box-shadow: 0 6px 14px rgba(37, 99, 235, 0.45); + } + } +} + +/* ========================================================= + MAIN CONTENT AREA + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .aui-content { + flex: 1; + padding: 24px; + background: #f4f6f8; + overflow-y: auto; + } +} + +/* ========================================================= + DASHBOARD GRID (CARDS) + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .dashboard-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); + gap: 16px; + align-items: stretch; + } + + .dashboard-card { + background: #ffffff; + border-radius: 14px; + padding: 18px; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.05); + transition: all 0.2s ease; + position: relative; + + &:hover { + transform: translateY(-2px); + box-shadow: 0 12px 28px rgba(0, 0, 0, 0.08); + } + + h4 { + font-size: 14px; + font-weight: 600; + color: #374151; + margin-bottom: 12px; + } + } +} + +/* ========================================================= + KPI STYLE (NUMBERS / COUNTS) + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .kpi-value { + font-size: 28px; + font-weight: 700; + color: #111827; + margin-bottom: 6px; + } + + .kpi-label { + font-size: 13px; + color: #6b7280; + } +} + +/* ========================================================= + CHART CONTAINERS + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .chart-container { + width: 100%; + height: 260px; + } +} + +/* ========================================================= + SCROLLBAR (SUBTLE) + ========================================================= */ +.o_action_manager .aui-dashboard-root { + + .aui-content::-webkit-scrollbar { + width: 8px; + } + + .aui-content::-webkit-scrollbar-track { + background: transparent; + } + + .aui-content::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.15); + border-radius: 8px; + } +} + +/* ========================================================= + RESPONSIVE + ========================================================= */ +@media (max-width: 1024px) { + .o_action_manager .aui-dashboard-root { + + .aui-sidebar { + width: 150px; + } + } +} + +@media (max-width: 768px) { + .o_action_manager .aui-dashboard-root { + + .aui-dashboard-body { + flex-direction: column; + } + + .aui-sidebar { + width: 100%; + flex-direction: row; + overflow-x: auto; + } + + .sidebar-item { + white-space: nowrap; + } + } +} diff --git a/demo_addons_modules/aui_custom_dashboards/static/src/xml/dashboard.xml b/demo_addons_modules/aui_custom_dashboards/static/src/xml/dashboard.xml new file mode 100644 index 000000000..6b468cb8a --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/static/src/xml/dashboard.xml @@ -0,0 +1,74 @@ + + + +
+ + +
+
Dashboards
+ +
+ +
+
+ + +
+ + + + + +
+ + + +
+ + + +

Sales Analytics

+
+ + + +
+ +
+
+
+
\ No newline at end of file diff --git a/demo_addons_modules/aui_custom_dashboards/views/view.xml b/demo_addons_modules/aui_custom_dashboards/views/view.xml new file mode 100644 index 000000000..5173c947f --- /dev/null +++ b/demo_addons_modules/aui_custom_dashboards/views/view.xml @@ -0,0 +1,21 @@ + + + + Dashboards + aui_dashboard + + + + + + \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_module/__init__.py b/demo_addons_modules/aui_custom_module/__init__.py new file mode 100644 index 000000000..9a7e03ede --- /dev/null +++ b/demo_addons_modules/aui_custom_module/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_module/__manifest__.py b/demo_addons_modules/aui_custom_module/__manifest__.py new file mode 100644 index 000000000..a3eab2b8e --- /dev/null +++ b/demo_addons_modules/aui_custom_module/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'AUI Custom Operations', + 'version': '1.0.0', + 'category': 'Operations/Manufacturing', + 'summary': 'Create Manufacturing Orders from Purchase Orders and manage inter-location inventory flows', + 'description': """ +AUI Custom Module + +Features: +- Adds Work Order / Manufacturing Order button on Purchase Orders +- Creates Manufacturing Orders directly from Purchase Orders +- Manages inter-location and out-to-out inventory transactions +- Integrates Purchase, Inventory, Manufacturing, Sales, and Accounting +- Supports internal stock movements and accounting impact +""", + 'author': 'AUI', + 'website': 'https://www.ftprotech.com', + 'license': 'LGPL-3', + 'depends': [ + 'l10n_in', + 'purchase', # Purchase Orders + 'purchase_stock', + 'sale', + 'stock', # Inventory & Transfers + 'stock_landed_costs', + 'mrp', # Manufacturing Orders / Work Orders + 'mrp_landed_costs', + 'sale', # Sales integration if required + 'account', # Accounting entries for stock & valuation + ], + 'data': [ + 'data/data.xml', + 'security/ir.model.access.csv', + # + 'views/stock.xml', + 'views/purchase_order.xml', + 'views/work_order_view.xml', + 'views/work_order_inward_view.xml', + 'views/sale.xml', + 'views/aui_business.xml', + # 'views/mrp_production_view.xml', + # 'views/stock_picking_view.xml', + + ], +} diff --git a/demo_addons_modules/aui_custom_module/data/data.xml b/demo_addons_modules/aui_custom_module/data/data.xml new file mode 100644 index 000000000..805ae1d4b --- /dev/null +++ b/demo_addons_modules/aui_custom_module/data/data.xml @@ -0,0 +1,25 @@ + + + + work Order + work.order + WO + 5 + + + + + + Raw Material + + fifo + + + + Finished Product + + fifo + + + + diff --git a/demo_addons_modules/aui_custom_module/models/__init__.py b/demo_addons_modules/aui_custom_module/models/__init__.py new file mode 100644 index 000000000..fc59d3ef7 --- /dev/null +++ b/demo_addons_modules/aui_custom_module/models/__init__.py @@ -0,0 +1,5 @@ +from . import stock +from . import purchase_order +from . import work_order +from . import work_order_inward +from . import sale \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_module/models/purchase_order.py b/demo_addons_modules/aui_custom_module/models/purchase_order.py new file mode 100644 index 000000000..06f0cc975 --- /dev/null +++ b/demo_addons_modules/aui_custom_module/models/purchase_order.py @@ -0,0 +1,135 @@ +from odoo import fields, models, api, _ +from odoo.exceptions import UserError + +class purchaseOrder(models.Model): + _inherit = 'purchase.order' + + vehicle_no = fields.Char(string="Vehicle No") + tax_type = fields.Selection( + [ + ('gst', 'CGST + SGST'), + ('igst', 'IGST') + ], + compute='_compute_tax_type', + store=True + ) + gstin = fields.Char("GST/IGST") + landed_cost_ids = fields.Many2many('stock.landed.cost', compute="_compute_landed_cost_ids") + mq = fields.Float("Manafactured Quantity") + ytm = fields.Float("Yet To Manafacture") + + def _prepare_picking(self): + if not self.group_id: + self.group_id = self.group_id.create({ + 'name': self.name, + 'partner_id': self.partner_id.id + }) + if not self.partner_id.property_stock_supplier.id: + raise UserError(_("You must set a Vendor Location for this partner %s", self.partner_id.name)) + return { + 'picking_type_id': self.picking_type_id.id, + 'partner_id': self.partner_id.id, + 'user_id': False, + 'date': self.date_order, + 'origin': self.name, + 'location_dest_id': self._get_destination_location(), + 'location_id': self.partner_id.property_stock_supplier.id, + 'company_id': self.company_id.id, + 'state': 'draft', + 'vehicle_no': self.vehicle_no + } + + @api.depends('picking_ids') + def _compute_landed_cost_ids(self): + for rec in self: + if rec.picking_ids: + rec.landed_cost_ids = self.env['stock.landed.cost'].sudo().search([('picking_ids','in',rec.picking_ids.ids)]).ids + else: + rec.landed_cost_ids = False + + @api.onchange("partner_id") + def onchange_aui_partner_id(self): + for rec in self: + if rec.partner_id.vat: + rec.gstin = rec.partner_id.vat + else: + rec.gstin = "" + + @api.depends('partner_id.state_id', 'company_id.state_id') + def _compute_tax_type(self): + for order in self: + if order.partner_id.state_id == order.company_id.state_id: + order.tax_type = 'gst' + else: + order.tax_type = 'igst' + + def action_open_landing_cost(self): + for rec in self: + return { + 'name': _('Landing Cost'), + 'view_mode': 'form', + 'view_id': self.env.ref('aui_custom_module.view_stock_landed_cost_form_2').id, + 'res_model': 'stock.landed.cost', + 'type': 'ir.actions.act_window', + 'context': { + 'default_picking_ids': [(6, 0, rec.picking_ids.filtered(lambda picking: picking.move_ids.stock_valuation_layer_ids != False and picking.state == 'done' and picking.company_id == self.env.company).ids)], + 'picking_domain_ids': rec.picking_ids.ids, + 'bill_domain_ids': rec.invoice_ids.ids, + }, + 'target': 'new', + } + + +class PurchaseOrderLine(models.Model): + _inherit = 'purchase.order.line' + + @api.depends( + 'product_id', + 'company_id', + 'order_id.partner_id', + 'order_id.fiscal_position_id', + 'order_id.tax_type', + ) + def _compute_tax_id(self): + # 1️⃣ Run base logic + super()._compute_tax_id() + + for line in self: + order = line.order_id + product = line.product_id + + if not order or not product or not order.tax_type: + continue + + company = line.company_id + line = line.with_company(company) + + # Fiscal position (keep Odoo behavior) + fpos = ( + order.fiscal_position_id + or order.fiscal_position_id._get_fiscal_position(order.partner_id) + ) + + # 2️⃣ Fetch PRODUCT purchase taxes + product_taxes = product.supplier_taxes_id._filter_taxes_by_company(company) + + if not product_taxes: + continue + + # 3️⃣ Filter taxes based on tax_type + if order.tax_type == 'gst': + # GST group (CGST + SGST) + taxes = product_taxes.filtered( + lambda t: t.tax_group_id and t.tax_group_id.name == 'GST' + ) + + elif order.tax_type == 'igst': + taxes = product_taxes.filtered( + lambda t: t.tax_group_id and t.tax_group_id.name == 'IGST' + ) + + else: + continue + + # 4️⃣ Apply fiscal position mapping + line.taxes_id = fpos.map_tax(taxes) \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_module/models/sale.py b/demo_addons_modules/aui_custom_module/models/sale.py new file mode 100644 index 000000000..be11e0aee --- /dev/null +++ b/demo_addons_modules/aui_custom_module/models/sale.py @@ -0,0 +1,32 @@ +from odoo import api, fields, _, models + +class saleOrder(models.Model): + _inherit = 'sale.order' + + warehouse_location_id = fields.Many2one('stock.location', related="warehouse_id.lot_stock_id", store=True) + vehicle_no = fields.Char(string="Vehicle No") + landed_cost_ids = fields.Many2many('stock.landed.cost', compute="_compute_landed_cost_ids") + + @api.depends('picking_ids') + def _compute_landed_cost_ids(self): + for rec in self: + if rec.picking_ids: + rec.landed_cost_ids = self.env['stock.landed.cost'].sudo().search([('picking_ids','in',rec.picking_ids.ids)]).ids + else: + rec.landed_cost_ids = False + + def action_open_landing_cost(self): + for rec in self: + return { + 'name': _('Landing Cost'), + 'view_mode': 'form', + 'view_id': self.env.ref('aui_custom_module.view_stock_landed_cost_form_2').id, + 'res_model': 'stock.landed.cost', + 'type': 'ir.actions.act_window', + 'context': { + 'default_picking_ids': [(6, 0, rec.picking_ids.filtered(lambda picking: picking.move_ids.stock_valuation_layer_ids != False and picking.state == 'done' and picking.company_id == self.env.company).ids)], + 'picking_domain_ids': rec.picking_ids.ids, + 'bill_domain_ids': rec.invoice_ids.ids, + }, + 'target': 'new', + } \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_module/models/stock.py b/demo_addons_modules/aui_custom_module/models/stock.py new file mode 100644 index 000000000..88660fdec --- /dev/null +++ b/demo_addons_modules/aui_custom_module/models/stock.py @@ -0,0 +1,64 @@ +from odoo import fields, models, api, _ +from odoo.exceptions import UserError + +class stockPicking(models.Model): + _inherit = 'stock.picking' + + vehicle_no = fields.Char(string="Vehicle No") + distance = fields.Float(string="Distance (km)") + landed_cost_ids = fields.Many2many('stock.landed.cost', compute="_compute_landed_cost_ids") + contains_raw_material = fields.Boolean(compute="_compute_check_raw_material", store=True) + + @api.depends("move_ids_without_package.product_id.categ_id") + def _compute_check_raw_material(self): + raw_category = self.env.ref("aui_custom_module.category_raw_material") + + for picking in self: + picking.contains_raw_material = any( + move.product_id.categ_id == raw_category + for move in picking.move_ids_without_package + if move.product_id + ) + + # def _set_lot_producing(self): + # self.ensure_one() + # for move_id in self.move_ids: + # self.ensure_one() + # name = self.env['ir.sequence'].next_by_code('stock.lot.serial') + # exist_lot = not name or self.env['stock.lot'].search([ + # ('product_id', '=', move_id.product_id.id), + # '|', ('company_id', '=', False), ('company_id', '=', self.company_id.id), + # ('name', '=', name), + # ], limit=1) + # if exist_lot: + # name = self.env['stock.lot']._get_next_serial(self.company_id, self.product_id) + # if not name: + # raise UserError(_("Please set the first Serial Number or a default sequence")) + # for line in self.move_line_ids: + # line.lot_name = self._prepare_stock_lot_values() + + @api.depends('state') + def _compute_landed_cost_ids(self): + for rec in self: + if rec.state == 'done': + rec.landed_cost_ids = self.env['stock.landed.cost'].sudo().search([('picking_ids','in',[rec.id])]).ids + else: + rec.landed_cost_ids = False + + def action_open_landing_cost(self): + for rec in self: + if rec.state == 'done': + return { + 'name': _('Landing Cost'), + 'view_mode': 'form', + 'view_id': self.env.ref('aui_custom_module.view_stock_landed_cost_form_2').id, + 'res_model': 'stock.landed.cost', + 'type': 'ir.actions.act_window', + 'context': { + 'default_picking_ids': [(6, 0, rec.filtered(lambda picking: picking.move_ids.stock_valuation_layer_ids != False and picking.state == 'done' and picking.company_id == self.env.company).ids)], + 'picking_domain_ids': [self.id], + }, + 'target': 'new', + } + + diff --git a/demo_addons_modules/aui_custom_module/models/work_order.py b/demo_addons_modules/aui_custom_module/models/work_order.py new file mode 100644 index 000000000..06b5c25c6 --- /dev/null +++ b/demo_addons_modules/aui_custom_module/models/work_order.py @@ -0,0 +1,386 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class WorkOrder(models.Model): + _name = 'work.order' + _description = 'Work Order' + + name = fields.Char(default='New', copy=False) + vehicle_no = fields.Char(string="Vehicle No") + source_picking_id = fields.Many2one('stock.picking', domain="[('contains_raw_material','=',True),('picking_type_code','=','incoming'),('state','=','done')]", required=True) + source_warehouse_id = fields.Many2one('stock.warehouse', required=True, domain="[('buy_to_resupply','=',True)]") + source_location_id = fields.Many2one('stock.location', related="source_warehouse_id.lot_stock_id", store=True) + warehouse_id = fields.Many2one('stock.warehouse', required=True, domain="[('manufacture_to_resupply','=',True)]") + partner_id = fields.Many2one('res.partner', string='Subcontractor', related="warehouse_id.partner_id") + + state = fields.Selection([ + ('draft', 'Draft'), + ('confirmed', 'Confirmed'), + ('sent', 'Material Sent'), + ('partial', 'Partially Received'), + ('done', 'Done'), + ], default='draft') + + line_ids = fields.One2many('work.order.line', 'work_order_id') + inward_ids = fields.Many2many('work.order.inward', compute='_compute_inward_receipts') + out_picking_id = fields.Many2one('stock.picking') + + received_quantity = fields.Float( + string='Received Quantity', + compute='_compute_received_quantity', + store=False + ) + + pending_quantity = fields.Float( + string='Pending Quantity', + compute='_compute_received_quantity', + store=False + ) + landed_cost_ids = fields.Many2many('stock.landed.cost', compute="_compute_landed_cost_ids") + + @api.depends('out_picking_id') + def _compute_landed_cost_ids(self): + for rec in self: + if rec.out_picking_id: + rec.landed_cost_ids = self.env['stock.landed.cost'].sudo().search([('picking_ids','in',[rec.out_picking_id.id])]).ids + else: + rec.landed_cost_ids = False + + def action_open_landing_cost(self): + for rec in self: + return { + 'name': _('Landing Cost'), + 'view_mode': 'form', + 'view_id': self.env.ref('aui_custom_module.view_stock_landed_cost_form_2').id, + 'res_model': 'stock.landed.cost', + 'type': 'ir.actions.act_window', + 'context': { + 'default_picking_ids': [(6, 0, [rec.out_picking_id.id])], + 'picking_domain_ids': [rec.out_picking_id.id], + 'bill_domain_ids': [], + }, + 'target': 'new', + } + + def action_mark_as_done(self): + for rec in self: + rec.state = 'done' + + def action_create_inward_receipt(self): + self.ensure_one() + # Prepare raw material lines from work order lines + raw_lines = [] + for line in self.line_ids: + lot_lines = [] + + # If your work.order.line has lot_id (single lot) + if line.lot_id: + lot_lines.append((0, 0, { + 'lot_id': line.lot_id.id, + 'quantity': line.quantity, + })) + + raw_lines.append((0, 0, { + 'product_id': line.product_id.id, + 'quantity': line.quantity, + 'uom_id': line.product_id.uom_id.id, + 'lot_ids':lot_lines + })) + + return { + 'type': 'ir.actions.act_window', + 'name': f'Inward Receipt for {self.name}', + 'res_model': 'work.order.inward', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_work_order_ids': [(6, 0, [self.id])], + 'default_warehouse_id': self.warehouse_id.id, + 'default_receiving_location_id': self.warehouse_id.lot_stock_id.id if self.warehouse_id.lot_stock_id else False, + 'default_dest_warehouse_id': self.source_warehouse_id.id if self.source_warehouse_id else False, + 'default_raw_line_ids': raw_lines, + } + } + + def _compute_inward_receipts(self): + for wo in self: + + draft_inward_ids = self.env['work.order.inward'].sudo().search([('work_order_ids','in',[wo.id]),('state','in',['draft'])]) + inward_ids = self.env['work.order.inward'].sudo().search([('allocation_line_ids.work_order_id','in',[wo.id]),('state','in',['confirmed'])]) + wo.inward_ids = list(set(inward_ids.ids+draft_inward_ids.ids)) + + @api.depends('line_ids.quantity','inward_ids.raw_line_ids.quantity','source_picking_id') + def _compute_received_quantity(self): + """Compute received and pending quantities for each work order""" + for wo in self: + wo.received_quantity = 0 + wo.pending_quantity = 0 + picking = wo.source_picking_id + if not picking: + continue + received_qty = sum(wo.inward_ids.raw_line_ids.mapped('quantity')) + + existing_qty = sum(wo.line_ids.mapped('quantity')) + + wo.received_quantity = received_qty + wo.pending_quantity = existing_qty - received_qty + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('name', 'New') == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code('work.order') or '/' + return super().create(vals_list) + + def action_confirm(self): + for wo in self: + picking = wo.source_picking_id + if not picking: + continue + + received_qty = sum(picking.move_line_ids.mapped('quantity')) + + existing_qty = sum( + self.env['work.order'] + .search([('source_picking_id', '=', picking.id), ('id', '!=', wo.id)]) + .mapped('line_ids.quantity') + ) + + current_qty = sum(wo.line_ids.mapped('quantity')) + + if existing_qty + current_qty > received_qty: + raise ValidationError( + "Work Order quantity exceeds received quantity." + ) + + self.state = 'confirmed' + + def action_send_material(self): + if self.state != 'confirmed': + return + picking = self.env['stock.picking'].create({ + 'partner_id': self.partner_id.id, + 'picking_type_id': self.source_warehouse_id.out_type_id.id, + 'origin': self.name, + 'location_id': self.source_warehouse_id.lot_stock_id.id, + 'location_dest_id': self.warehouse_id.lot_stock_id.id, + 'vehicle_no': self.vehicle_no, + }) + + for line in self.line_ids: + self.env['stock.move.line'].create({ + 'picking_id': picking.id, + 'product_id': line.product_id.id, + 'quantity': line.quantity, + 'lot_id': line.lot_id.id, + 'location_id': self.source_warehouse_id.lot_stock_id.id, + 'location_dest_id': self.warehouse_id.lot_stock_id.id, + }) + + self.out_picking_id = picking.id + picking.button_validate() + self.state = 'sent' + + @api.onchange('source_picking_id') + def onchange_source_picking_id(self): + for wo in self: + lines = [(5, 0, 0)] + + if not wo.source_picking_id: + wo.line_ids = lines + continue + + picking = wo.source_picking_id + total_picking = sum(picking.move_line_ids.mapped('quantity')) + remaining_qty = total_picking - picking.work_order_qty_total + + for ml in picking.move_line_ids: + if not ml.product_id: + continue # 🔒 ABSOLUTE SAFETY + + lines.append((0, 0, { + 'product_id': ml.product_id.id, + 'quantity': remaining_qty, + 'lot_id': ml.lot_id.id, + })) + + wo.line_ids = lines + + +class WorkOrderLine(models.Model): + _name = 'work.order.line' + + @api.constrains('quantity', 'product_id') + def quantity_constrain(self): + for rec in self: + picking = rec.work_order_id.source_picking_id + if not picking or not rec.product_id: + continue + + moved_qty = sum( + picking.move_ids_without_package + .filtered(lambda m: m.product_id == rec.product_id) + .mapped('quantity') + ) + + if rec.quantity > moved_qty: + raise ValidationError( + _( + "Selected quantity (%s) cannot be greater than " + "available quantity (%s) in the stock picking." + ) % (rec.quantity, moved_qty) + ) + + work_order_id = fields.Many2one('work.order', ondelete='cascade') + product_id = fields.Many2one('product.product', required=True, store=True) + quantity = fields.Float(required=True) + quant_id = fields.Many2one('stock.quant') + lot_id = fields.Many2one('stock.lot') + + product_domain = fields.Char( + string='Product Domain', + compute='_compute_product_domain', + store=False + ) + + @api.onchange('product_id') + def onchange_product_id(self): + for rec in self: + picking_received = rec.work_order_id.source_picking_id + total_picking = sum(picking_received.move_line_ids.mapped('quantity')) + rec.quantity = total_picking - picking_received.work_order_qty_total + + + @api.depends('work_order_id.source_location_id', 'work_order_id.source_picking_id') + def _compute_product_domain(self): + for rec in self: + if not rec.work_order_id or not rec.work_order_id.source_location_id or not rec.work_order_id.source_picking_id: + rec.product_domain = "[]" + continue + + # Products available in source location + available_product_ids = self.env['stock.quant'].search([ + ('location_id', '=', rec.work_order_id.source_location_id.id), + ('quantity', '>', 0), + ]).mapped('product_id.id') + + # Products present in picking + picking_product_ids = rec.work_order_id.source_picking_id.move_ids_without_package.mapped( + 'product_id.id' + ) + + # Intersection: available + in picking + allowed_product_ids = list(set(available_product_ids) & set(picking_product_ids)) + + if allowed_product_ids: + rec.product_domain = f"[('id', 'in', {allowed_product_ids})]" + else: + rec.product_domain = "[]" + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + work_order_count = fields.Integer( + compute="_compute_work_orders" + ) + + + work_order_qty_total = fields.Float( + compute="_compute_work_orders" + ) + available_to_work_order = fields.Float( + compute="_compute_work_orders" + ) + can_create_work_order = fields.Boolean( + compute="_compute_can_create_work_order", + store=True + ) + + @api.depends( + "move_line_ids.quantity", + "work_order_qty_total", + "contains_raw_material" + ) + def _compute_can_create_work_order(self): + for picking in self: + received = sum( + picking.move_line_ids.filtered( + lambda l: l.quantity > 0 + ).mapped('quantity') + ) + picking.can_create_work_order = bool( + picking.contains_raw_material and + received > picking.work_order_qty_total + ) + + def _compute_work_orders(self): + for picking in self: + work_orders = self.env['work.order'].search([ + ('source_picking_id', '=', picking.id), ('state','not in',['draft']) + ]) + + picking.work_order_count = len(work_orders) + + picking.work_order_qty_total = sum( + work_orders.line_ids.mapped('quantity') + ) + picking.available_to_work_order = sum(picking.move_line_ids.mapped('quantity')) - sum( + work_orders.line_ids.mapped('quantity')) + + def action_create_work_order(self): + self.ensure_one() + for picking in self: + received = sum( + picking.move_line_ids.filtered( + lambda l: l.quantity > 0 + ).mapped('quantity') + ) + can_do_work_order = bool( + picking.contains_raw_material and + received > picking.work_order_qty_total + ) + if not can_do_work_order: + raise ValidationError(_("Not Allowed to crete Work Order for this")) + + lines = [] + for ml in self.move_line_ids: + lines.append((0, 0, { + 'product_id': ml.product_id.id, + 'quantity': self.available_to_work_order, + 'lot_id': ml.lot_id.id, + })) + + return { + 'type': 'ir.actions.act_window', + 'res_model': 'work.order', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_source_picking_id': self.id, + 'default_source_warehouse_id': self.picking_type_id.warehouse_id.id, + 'default_line_ids': lines, + } + } + + def action_view_work_orders(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': 'Work Orders', + 'res_model': 'work.order', + 'view_mode': 'list,form', + 'domain': [('source_picking_id', '=', self.id)], + 'context': {'default_source_picking_id': self.id}, + } + +class StockMoveLine(models.Model): + _inherit = 'stock.move.line' + + def write(self, vals): + res = super().write(vals) + if 'quantity' in vals: + pickings = self.mapped('picking_id') + pickings._compute_can_create_work_order() + return res diff --git a/demo_addons_modules/aui_custom_module/models/work_order_inward.py b/demo_addons_modules/aui_custom_module/models/work_order_inward.py new file mode 100644 index 000000000..29422d04e --- /dev/null +++ b/demo_addons_modules/aui_custom_module/models/work_order_inward.py @@ -0,0 +1,579 @@ +from odoo import models, fields, api +from odoo.exceptions import UserError, ValidationError + + +class WorkOrderInward(models.Model): + _name = 'work.order.inward' + _description = 'Work Order Inward' + + work_order_ids = fields.Many2many( + 'work.order', + string='Work Orders', + domain="[('state','not in',['draft','done'])]", + readonly=False + ) + + state = fields.Selection([ + ('draft', 'Draft'), + ('confirmed', 'Confirmed'), + ], default='draft') + + warehouse_id = fields.Many2one( + 'stock.warehouse', + required=True, + domain="[('manufacture_to_resupply','=',True)]" + ) + + receiving_location_id = fields.Many2one( + 'stock.location', + related='warehouse_id.lot_stock_id', + required=True, + store=True + ) + + dest_warehouse_id = fields.Many2one('stock.warehouse',required=True,domain="[('buy_to_resupply','=',True)]") + dest_location_id = fields.Many2one('stock.location',related='dest_warehouse_id.lot_stock_id') + + raw_line_ids = fields.One2many( + 'work.order.inward.raw.line', + 'inward_id', + string='Raw Materials Used' + ) + + product_id = fields.Many2one( + 'product.product', + string='Finished Product', + required=True, + domain= "[('sale_ok','=',True)]", + ) + + quantity = fields.Float(string='Finished Qty', required=True) + + uom_id = fields.Many2one( + 'uom.uom', + related="product_id.uom_id", + store=True + ) + + lot_id = fields.Many2one('stock.lot') + + mo_id = fields.Many2one( + 'mrp.production', + string='Manufacturing Order', + readonly=True + ) + + allocation_line_ids = fields.One2many( + 'work.order.inward.allocation', + 'inward_id', + string='Work Order Allocations', + readonly=True + ) + + total_allocated_qty = fields.Float( + string='Total Allocated', + compute='_compute_total_allocated', + store=True + ) + + in_picking_id = fields.Many2one('stock.picking') + + fg_weight = fields.Float('Weight') + fg_uom_id = fields.Many2one('uom.uom') + + difference = fields.Float( + string='Weight Difference', + compute='_compute_weight_difference', + store=True, + help="" + ) + + difference_uom_id = fields.Many2one( + 'uom.uom', + compute='_compute_weight_difference', + store=True + ) + + def compute_batch_raw_materials(self): + StockQuant = self.env['stock.quant'] + + for rec in self: + if not rec.product_id or rec.quantity <= 0 or not rec.receiving_location_id: + continue + + # Find BOM + bom_dict = self.env['mrp.bom']._bom_find( + products=rec.product_id, + company_id=self.env.company.id, + bom_type='normal' + ) + bom = bom_dict.get(rec.product_id) + + if not bom: + raise UserError(f"No BOM found for product {rec.product_id.display_name}") + + # Clear existing raw lines + rec.raw_line_ids = [(5, 0, 0)] + + raw_lines = [] + + for bom_line in bom.bom_line_ids: + # ✅ CORRECT BOM calculation + required_qty = ( + bom_line.product_qty / bom.product_qty + ) * rec.quantity + + # Get available FIFO quants + quants = StockQuant.search([ + ('product_id', '=', bom_line.product_id.id), + ('location_id', '=', rec.receiving_location_id.id), + ('quantity', '>', 0), + ('lot_id', '!=', False), + ], order='in_date asc') + + total_available = sum(quants.mapped('quantity')) + + if total_available < required_qty: + raise UserError( + f"Insufficient stock for {bom_line.product_id.display_name}. " + f"Required: {required_qty}, Available: {total_available}" + ) + + lot_lines = [] + remaining_qty = required_qty + + for quant in quants: + if remaining_qty <= 0: + break + + take_qty = min(quant.quantity, remaining_qty) + + lot_lines.append((0, 0, { + 'lot_id': quant.lot_id.id, + 'quantity': take_qty, + })) + + remaining_qty -= take_qty + + raw_lines.append((0, 0, { + 'product_id': bom_line.product_id.id, + 'quantity': required_qty, + 'uom_id': bom_line.product_uom_id.id, + 'lot_ids': lot_lines, + })) + + rec.raw_line_ids = raw_lines + + @api.depends( + 'raw_line_ids.quantity', + 'raw_line_ids.uom_id', + 'fg_weight', + 'fg_uom_id' + ) + def _compute_weight_difference(self): + weight_category = self.env.ref('uom.product_uom_categ_kgm') + + for rec in self: + total_raw_weight = 0.0 + + for line in rec.raw_line_ids: + if line.uom_id.category_id == weight_category: + qty_in_kg = line.uom_id._compute_quantity( + line.quantity, + weight_category.uom_ids.filtered(lambda u: u.name == 'kg')[:1] + ) + total_raw_weight += qty_in_kg + + fg_weight_kg = 0.0 + if rec.fg_weight and rec.fg_uom_id and rec.fg_uom_id.category_id == weight_category: + fg_weight_kg = rec.fg_uom_id._compute_quantity( + rec.fg_weight, + weight_category.uom_ids.filtered(lambda u: u.name == 'kg')[:1] + ) + + diff_kg = total_raw_weight - fg_weight_kg + + rec.difference = diff_kg + rec.difference_uom_id = weight_category.uom_ids.filtered(lambda u: u.name == 'kg')[:1] + + + @api.depends('allocation_line_ids.quantity') + def _compute_total_allocated(self): + for rec in self: + rec.total_allocated_qty = sum(rec.allocation_line_ids.mapped('quantity')) + + @api.onchange('warehouse_id') + def _onchange_warehouse_id(self): + """Auto-select work orders from this warehouse""" + if self.warehouse_id: + # Find work orders from this warehouse that are not done + work_orders = self.env['work.order'].search([ + ('warehouse_id', '=', self.warehouse_id.id), + ('state', 'not in', ['draft', 'done']) + ], order='create_date asc') # FIFO order + + self.work_order_ids = work_orders + self._auto_allocate_quantity() + + @api.onchange('raw_line_ids', 'product_id', 'quantity') + def _onchange_raw_or_quantity(self): + """Auto-allocate when raw materials or quantity changes""" + if self.raw_line_ids and self.product_id and self.quantity > 0: + self._auto_allocate_quantity() + + def _auto_allocate_quantity(self): + """Automatically allocate quantity to work orders using FIFO""" + if not self.work_order_ids or self.quantity <= 0: + return + + # Clear existing allocations + self.allocation_line_ids = [(5, 0, 0)] + + # Get work orders sorted by creation date (FIFO) + sorted_work_orders = self.work_order_ids.sorted(lambda wo: wo.create_date) + + remaining_qty = self.quantity + allocations = [] + + for work_order in sorted_work_orders: + if remaining_qty <= 0: + break + + # Get the total raw material sent for this work order + total_sent = sum(work_order.line_ids.mapped('quantity')) + + # Get already received quantity for this work order + already_received = sum( + self.env['work.order.inward.allocation'].search([ + ('work_order_id', '=', work_order.id), + ('state', '=', 'done') + ]).mapped('quantity') + ) + + # Calculate pending quantity + pending_qty = total_sent - already_received + + if pending_qty > 0: + # Allocate either pending_qty or remaining_qty, whichever is smaller + allocate_qty = min(pending_qty, remaining_qty) + + allocations.append((0, 0, { + 'work_order_id': work_order.id, + 'quantity': allocate_qty, + 'state': 'allocated' + })) + + remaining_qty -= allocate_qty + + # If there's remaining quantity after allocating to all work orders + if remaining_qty > 0 and allocations: + # Distribute remaining quantity proportionally + total_allocated = self.quantity - remaining_qty + for i, alloc in enumerate(allocations): + alloc_data = alloc[2] + proportion = alloc_data['quantity'] / total_allocated if total_allocated > 0 else 0 + additional_qty = remaining_qty * proportion + alloc_data['quantity'] += additional_qty + + # Reset remaining_qty + remaining_qty = 0 + + # Update allocations + self.allocation_line_ids = allocations + + # If we couldn't allocate all quantity, show warning + if remaining_qty > 0: + return { + 'warning': { + 'title': 'Incomplete Allocation', + 'message': f'Could not allocate {remaining_qty} units to work orders. ' + f'You may need to create more work orders or adjust quantities.' + } + } + + def action_confirm(self): + self.ensure_one() + self._auto_allocate_quantity() + # Validate that total allocated equals received quantity + total_allocated = sum(self.allocation_line_ids.mapped('quantity')) + if abs(total_allocated - self.quantity) > 0.0001: + raise ValidationError( + f"Allocated quantity ({total_allocated}) must equal received quantity ({self.quantity})" + ) + + # Validate raw material lots + for raw_line in self.raw_line_ids: + if not raw_line.lot_ids: + raise ValidationError( + f"Please specify lots for {raw_line.product_id.display_name}" + ) + total_lot_qty = sum(raw_line.lot_ids.mapped('quantity')) + if abs(total_lot_qty - raw_line.quantity) > 0.0001: + raise ValidationError( + f"Total quantity in lots ({total_lot_qty}) must equal quantity used ({raw_line.quantity}) for {raw_line.product_id.display_name}" + ) + + # 1️⃣ Create MO + mo = self.env['mrp.production'].create({ + 'product_id': self.product_id.id, + 'product_qty': self.quantity, + 'product_uom_id': self.product_id.uom_id.id, + 'origin': ', '.join(self.work_order_ids.mapped('name')), + 'picking_type_id': self.warehouse_id.manu_type_id.id + }) + + # 2️⃣ Add ALL raw materials to MO with lots + for raw_line in self.raw_line_ids: + # Create the move + move = self.env['stock.move'].create({ + 'name': raw_line.product_id.name, + 'product_id': raw_line.product_id.id, + 'product_uom_qty': raw_line.quantity, + 'product_uom': raw_line.uom_id.id, + 'location_id': self.receiving_location_id.id, + 'location_dest_id': mo.location_src_id.id, + 'raw_material_production_id': mo.id, + 'picking_type_id': mo.picking_type_id.id, + }) + + # Create move lines with lots + for lot_line in raw_line.lot_ids: + self.env['stock.move.line'].create({ + 'move_id': move.id, + 'product_id': raw_line.product_id.id, + 'lot_id': lot_line.lot_id.id, + 'quantity': lot_line.quantity, + 'product_uom_id': raw_line.uom_id.id, + 'quantity': lot_line.quantity, + 'location_id': self.receiving_location_id.id, + 'location_dest_id': mo.location_src_id.id, + }) + + # 3️⃣ Confirm MO + mo.action_confirm() + + # 4️⃣ Set quantities done on move lines (already set above) + for move in mo.move_raw_ids: + for move_line in move.move_line_ids: + move_line.quantity = move_line.quantity + + # 5️⃣ Produce finished goods + mo.qty_producing = self.quantity + mo.action_generate_serial() + ctx = dict(self.env.context) + mo.with_context(ctx, skip_consumption=True).button_mark_done() + picking = self.env['stock.picking'].create({ + 'partner_id': self.warehouse_id.partner_id.id, + 'picking_type_id': self.dest_warehouse_id.in_type_id.id, + 'origin': mo.display_name, + 'location_id': mo.location_dest_id.id, + 'location_dest_id': self.dest_warehouse_id.lot_stock_id.id + }) + + self.env['stock.move.line'].create({ + 'picking_id': picking.id, + 'product_id': mo.product_id.id, + 'quantity': mo.product_qty, + 'lot_id': mo.lot_producing_id.id, + 'location_id': mo.location_dest_id.id, + 'location_dest_id': self.dest_warehouse_id.lot_stock_id.id, + }) + + self.in_picking_id = picking.id + picking.button_validate() + + # 6️⃣ Update allocation states and work order states + for allocation in self.allocation_line_ids: + allocation.state = 'done' + + # Update work order state if fully received + work_order = allocation.work_order_id + total_sent = sum(work_order.line_ids.mapped('quantity')) + total_received = sum( + self.env['work.order.inward.allocation'].search([ + ('work_order_id', '=', work_order.id), + ('state', '=', 'done') + ]).mapped('quantity') + ) + + if abs(total_received - total_sent) < 0.0001: + work_order.state = 'done' + elif total_received > 0: + work_order.state = 'partial' + + self.mo_id = mo.id + self.state = 'confirmed' + + def _get_available_work_orders(self): + """Get available work orders based on warehouse and state""" + if not self.warehouse_id: + return self.env['work.order'] + + return self.env['work.order'].search([ + ('warehouse_id', '=', self.warehouse_id.id), + ('state', 'not in', ['draft', 'done']) + ], order='create_date asc') + + +class WorkOrderInwardRawLine(models.Model): + _name = 'work.order.inward.raw.line' + _description = 'Work Order Inward Raw Material Line' + + inward_id = fields.Many2one( + 'work.order.inward', + ondelete='cascade', + required=True + ) + + product_id = fields.Many2one( + 'product.product', + required=True, + ) + + quantity = fields.Float(required=True) + + uom_id = fields.Many2one( + 'uom.uom', + required=True + ) + + lot_ids = fields.One2many( + 'work.order.inward.raw.line.lot', + 'raw_line_id', + string='Lots Used', + copy=True + ) + + total_lot_quantity = fields.Float( + string='Total Lot Quantity', + compute='_compute_total_lot_quantity', + store=True + ) + + @api.depends('lot_ids.quantity') + def _compute_total_lot_quantity(self): + for rec in self: + rec.total_lot_quantity = sum(rec.lot_ids.mapped('quantity')) + + @api.onchange('product_id') + def _onchange_product_id(self): + if self.product_id: + self.uom_id = self.product_id.uom_id + # Clear lots when product changes + self.lot_ids = [(5, 0, 0)] + + product_domain = fields.Char( + string='Product Domain', + compute='_compute_product_domain', + store=False + ) + + @api.depends('inward_id.receiving_location_id') + def _compute_product_domain(self): + for rec in self: + if rec.inward_id and rec.inward_id.receiving_location_id: + # Get products with stock in this location + quants = self.env['stock.quant'].search([ + ('location_id', '=', rec.inward_id.receiving_location_id.id), + ('quantity', '>', 0) + ]) + product_ids = quants.mapped('product_id.id') + + if product_ids: + rec.product_domain = f"[('id', 'in', {product_ids})]" + else: + rec.product_domain = "[]" + else: + rec.product_domain = "[]" + + @api.onchange('quantity') + def _onchange_quantity(self): + """Auto-fill lot quantities when total quantity changes""" + if self.quantity > 0 and self.lot_ids: + # Distribute quantity among existing lots + lot_count = len(self.lot_ids) + if lot_count > 0: + avg_qty = self.quantity / lot_count + for i, lot in enumerate(self.lot_ids): + if i == lot_count - 1: # Last lot gets remainder + lot.quantity = self.quantity - (avg_qty * (lot_count - 1)) + else: + lot.quantity = avg_qty + + +class WorkOrderInwardRawLineLot(models.Model): + _name = 'work.order.inward.raw.line.lot' + _description = 'Work Order Inward Raw Material Line Lot' + + raw_line_id = fields.Many2one( + 'work.order.inward.raw.line', + ondelete='cascade', + required=True + ) + + lot_id = fields.Many2one( + 'stock.lot', + string='Lot/Serial', + required=True, + domain="[('product_id','=',parent.product_id)]" + ) + + quantity = fields.Float(string='Quantity Used', required=True, default=0) + + product_id = fields.Many2one( + 'product.product', + related='raw_line_id.product_id', + store=True + ) + + uom_id = fields.Many2one( + 'uom.uom', + related='raw_line_id.uom_id', + store=True + ) + + _sql_constraints = [ + ('quantity_positive', 'CHECK(quantity > 0)', 'Quantity must be positive.'), + ] + + @api.depends('lot_id','quantity','uom_id') + def _compute_display_name(self): + for rec in self: + rec.display_name = f'{rec.lot_id.display_name} ({rec.quantity} {rec.uom_id.display_name})' + + + +class WorkOrderInwardAllocation(models.Model): + _name = 'work.order.inward.allocation' + _description = 'Work Order Inward Allocation' + + inward_id = fields.Many2one( + 'work.order.inward', + ondelete='cascade', + required=True + ) + + work_order_id = fields.Many2one( + 'work.order', + required=True, + string='Allocated Work Order' + ) + + quantity = fields.Float(string='Allocated Quantity', required=True) + + state = fields.Selection([ + ('allocated', 'Allocated'), + ('done', 'Done'), + ], default='allocated') + + source_warehouse_id = fields.Many2one( + 'stock.warehouse', + related='work_order_id.warehouse_id', + store=True + ) + + product_id = fields.Many2one( + 'product.product', + related='inward_id.product_id', + store=True + ) \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_module/security/ir.model.access.csv b/demo_addons_modules/aui_custom_module/security/ir.model.access.csv new file mode 100644 index 000000000..ae6193b3b --- /dev/null +++ b/demo_addons_modules/aui_custom_module/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_work_order,access_work_order,model_work_order,,1,1,1,1 +access_work_order_line,access_work_order_line,model_work_order_line,,1,1,1,1 +access_work_order_inward,access_work_order_inward,model_work_order_inward,,1,1,1,1 +access_work_order_inward_raw_line,access.work.order.inward.raw.line,model_work_order_inward_raw_line,,1,1,1,1 +access_work_order_inward_raw_line_lot,access.work.order.inward.raw.line.lot,model_work_order_inward_raw_line_lot,,1,1,1,1 +access_work_order_inward_allocation,access.work.order.inward.allocation,model_work_order_inward_allocation,,1,1,1,1 \ No newline at end of file diff --git a/demo_addons_modules/aui_custom_module/static/description/icon.jpg b/demo_addons_modules/aui_custom_module/static/description/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad6d8bffc8c75f6d06a84ab9fd0b6bebdaa32bd7 GIT binary patch literal 18115 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 literal 0 HcmV?d00001 diff --git a/demo_addons_modules/aui_custom_module/static/description/icon.png b/demo_addons_modules/aui_custom_module/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..905994fbc47481b2e130f1365a916fcbf311ee37 GIT binary patch literal 47073 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�rNG-)h|`j@D35K)CP^`H*ADGrxz0xUSfVj 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 + + + + + + + + + + Requests for Quotation + aui_purchase + purchase.order + list,kanban,form,pivot,graph,calendar,activity + + [] + + {'quotation_only': True} + +

+ No request for quotation found. Let's create one! +

+

+ Requests for quotation are documents that will be sent to your suppliers to request prices for different + products you consider buying. + Once an agreement has been found with the supplier, they will be confirmed and turned into purchase + orders. +

+
+
+ + + + + + + + + Work Orders + aui_work_orders + work.order + list,form + + + + + + Work Order Inward + aui_wo_inward + work.order.inward + list,form + + + + + + + + + + + + + + + + + + + + + + Quotations + aui_sales + sale.order + + list,kanban,form,calendar,pivot,graph,activity + + {'search_default_my_quotation': 1} + +
+

+ Beat competitors with stunning quotations! +

+

+ Boost sales with online payments or signatures, upsells, and a great customer portal. +

+ + Check a sample. It's clean! + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Products + product.template + kanban,list,form + + {"search_default_goods": 1, 'default_is_storable': True} + +

+ No product found. Let's create one! +

+ Track your stock quantities by creating storable products. +

+
+
+ + + + + Bills of Materials + mrp.bom + [] + list,kanban,form + + {'default_company_id': allowed_company_ids[0]} + +

+ No bill of materials found. Let's create one! +

+ Bills of materials allow you to define the list of required raw + materials used to make a finished product; through a manufacturing + order or a pack of products. +

+
+
+ + + + + + +
diff --git a/demo_addons_modules/aui_custom_module/views/purchase_order.xml b/demo_addons_modules/aui_custom_module/views/purchase_order.xml new file mode 100644 index 000000000..4195b3100 --- /dev/null +++ b/demo_addons_modules/aui_custom_module/views/purchase_order.xml @@ -0,0 +1,192 @@ + + + + purchase.order.form.aui.inherit + purchase.order + + + + 0 + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + account.asset.asset.view.kanban + account.asset.asset + + + + + + + + +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ + + +
+
+
+
+
+
+
+
+ + + account.asset.asset.view.tree + account.asset.asset + + + + + + + + + + + + + + + + + account.asset.asset.view.search + account.asset.asset + + + + + + + + + + + + + + + + + + Assets + account.asset.asset + list,kanban,form + + [('category_id.type', '=', 'purchase')] + + + + + + + + + + + + diff --git a/demo_addons_modules/base_accounting_kit/views/account_asset_category_views.xml b/demo_addons_modules/base_accounting_kit/views/account_asset_category_views.xml new file mode 100644 index 000000000..eb902f60c --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_asset_category_views.xml @@ -0,0 +1,146 @@ + + + + + account.asset.category.view.form + account.asset.category + +
+ + +
+
+ + + + + + + +
+
+ +
+
+ +
+
+ + +
+ + + + + + + + + + + + + +
+
+
+
+
+ + + account.asset.category.view.kanban + account.asset.category + + + + + + + +
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+ + + account.asset.category.view.tree + account.asset.category + + + + + + + + + + + + account.asset.category.view.search + account.asset.category + + + + + + + + + + + + + + + Asset Types + account.asset.category + [('type', '=', 'purchase')] + list,kanban,form + {'default_type': 'purchase'} + + + +
diff --git a/demo_addons_modules/base_accounting_kit/views/account_bank_statement_line_views.xml b/demo_addons_modules/base_accounting_kit/views/account_bank_statement_line_views.xml new file mode 100644 index 000000000..5a70088a6 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_bank_statement_line_views.xml @@ -0,0 +1,290 @@ + + + + + account.bank.statement.line.view.search + account.bank.statement.line + 999 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + account.bank.statement.line.view.kanban + account.bank.statement.line + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + + + + +
+
+ + + +
+
+ +
+
+ + + +
+
+
+
+ +
+
+
+ + To Check + +
+ + Matched +
+
+
+
+
+
+
+
+
+
+
+ + + account.bank.statement.line.view.tree + account.bank.statement.line + + + + + + + + + + + + + + + + + + + + + + account.bank.statement.line.view.form + account.bank.statement.line + +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + Add a Transaction + account.bank.statement.line + form + + new + + + + account.bank.statement.line.view.form + account.bank.statement.line + +
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + +
+ in + +
+
+
+
+ +
+ +
+
+
+ +
+
+
diff --git a/demo_addons_modules/base_accounting_kit/views/account_bank_statement_views.xml b/demo_addons_modules/base_accounting_kit/views/account_bank_statement_views.xml new file mode 100644 index 000000000..73da42e8c --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_bank_statement_views.xml @@ -0,0 +1,34 @@ + + + + + account.bank.statement.view.form + account.bank.statement + 100 + +
+ + + + + + + + +
+
+
+ + + + Create Statement + account.bank.statement + form + + new + + +
diff --git a/demo_addons_modules/base_accounting_kit/views/account_configuration.xml b/demo_addons_modules/base_accounting_kit/views/account_configuration.xml new file mode 100644 index 000000000..9af958a89 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_configuration.xml @@ -0,0 +1,16 @@ + + + + + account.account.view.form.inherit.base.accounting.kit + account.account + + + + + + + + + + diff --git a/demo_addons_modules/base_accounting_kit/views/account_followup.xml b/demo_addons_modules/base_accounting_kit/views/account_followup.xml new file mode 100644 index 000000000..ccaf90baf --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_followup.xml @@ -0,0 +1,88 @@ + + + + + account.followup.view.form + account.followup + +
+

+
+ + + account.followup.view.tree + account.followup + + + + + + + + + account.followup.view.search + account.followup + + + + + + + + + account.followup.view.kanban + account.followup + + + + + +
+
+ +
+
+
+
+
+
+
+ + + Payment Follow-ups + ir.actions.act_window + account.followup + + list,kanban,form + +

+ Define follow-up levels and their related actions +

+

+ For each step, specify the actions to be taken and delay in days. It is + possible to use print and e-mail templates to send specific messages to + the customer. +

+
+
+ + +
diff --git a/demo_addons_modules/base_accounting_kit/views/account_group.xml b/demo_addons_modules/base_accounting_kit/views/account_group.xml new file mode 100644 index 000000000..4d2643582 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_group.xml @@ -0,0 +1,51 @@ + + + + + account.group.view.form + account.group + +
+ +
+
+ + + + + + + +
+ + +
+
+ + + account.group.view.tree + account.group + + + + + + + + + + + + Account Groups + account.group + list,form + + + +
\ No newline at end of file diff --git a/demo_addons_modules/base_accounting_kit/views/account_journal_views.xml b/demo_addons_modules/base_accounting_kit/views/account_journal_views.xml new file mode 100644 index 000000000..a0ffc7fcc --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_journal_views.xml @@ -0,0 +1,33 @@ + + + + + account.journal.view.kanban.inherit.base.accounting.kit + account.journal + + + + + + + + Import + + + + + action_open_reconcile + + + + diff --git a/demo_addons_modules/base_accounting_kit/views/account_move_line_views.xml b/demo_addons_modules/base_accounting_kit/views/account_move_line_views.xml new file mode 100644 index 000000000..f317d7959 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/account_move_line_views.xml @@ -0,0 +1,43 @@ + + + + + account.move.line.view.tree + account.move.line + 999 + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + +
+
+
+ + + + diff --git a/demo_addons_modules/base_accounting_kit/views/multiple_invoice_layout_view.xml b/demo_addons_modules/base_accounting_kit/views/multiple_invoice_layout_view.xml new file mode 100644 index 000000000..3d14997bb --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/multiple_invoice_layout_view.xml @@ -0,0 +1,42 @@ + + + + + multiple.invoice.layout.view.form + multiple.invoice.layout + +
+ + + + + + + + + +
+ +
+
+
+
+
+
+
+ + + ir.actions.act_window + Configure Copy layout + form + new + multiple.invoice.layout + + +
diff --git a/demo_addons_modules/base_accounting_kit/views/product_template_views.xml b/demo_addons_modules/base_accounting_kit/views/product_template_views.xml new file mode 100644 index 000000000..02a862f68 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/product_template_views.xml @@ -0,0 +1,17 @@ + + + + + product.template.view.form.inherit.base.accounting.kit + product.template + + + + + + + + diff --git a/demo_addons_modules/base_accounting_kit/views/product_views.xml b/demo_addons_modules/base_accounting_kit/views/product_views.xml new file mode 100644 index 000000000..7bccaad49 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/product_views.xml @@ -0,0 +1,17 @@ + + + + + product.template.view.form.inherit.base.accounting.kit + product.template + + + + + + + + \ No newline at end of file diff --git a/demo_addons_modules/base_accounting_kit/views/reports_config_view.xml b/demo_addons_modules/base_accounting_kit/views/reports_config_view.xml new file mode 100644 index 000000000..c8af2a015 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/reports_config_view.xml @@ -0,0 +1,82 @@ + + + + + account.financial.report.view.form + account.financial.report + +
+ + + + + + + + + + + + + + + + + + +
+
+
+ + + account.financial.report.view.tree + account.financial.report + + + + + + + + + + + + account.financial.report.view.search + account.financial.report + + + + + + + + + + + + + + + Financial Reports + ir.actions.act_window + account.financial.report + list,form + + + + + +
diff --git a/demo_addons_modules/base_accounting_kit/views/res_config_settings_views.xml b/demo_addons_modules/base_accounting_kit/views/res_config_settings_views.xml new file mode 100644 index 000000000..aee861a02 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/res_config_settings_views.xml @@ -0,0 +1,23 @@ + + + + res.config.view.inherited.base.accounting.kit + res.config.settings + + + + + + + + + + + + + + + + + + diff --git a/demo_addons_modules/base_accounting_kit/views/res_partner_views.xml b/demo_addons_modules/base_accounting_kit/views/res_partner_views.xml new file mode 100644 index 000000000..4252329f4 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/views/res_partner_views.xml @@ -0,0 +1,93 @@ + + + + + res.partner.view.form.inherit.base.account.report + + res.partner + + + + + + + + +
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
\ No newline at end of file diff --git a/demo_addons_modules/base_accounting_kit/wizard/__init__.py b/demo_addons_modules/base_accounting_kit/wizard/__init__.py new file mode 100644 index 000000000..7a9b9133e --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/__init__.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import account_common_partner_report +from . import account_aged_trial_balance +from . import account_balance_report +from . import account_bank_book_report +from . import account_cash_book_report +from . import account_day_book_report +from . import account_lock_date +from . import account_print_journal +from . import account_report_general_ledger +from . import account_report_partner_ledger +from . import asset_depreciation_confirmation +from . import asset_modify +from . import cash_flow_report +from . import financial_report +from . import import_bank_statement +from . import kit_account_tax_report diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance.py b/demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance.py new file mode 100644 index 000000000..3ff21f58f --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +import time +from dateutil.relativedelta import relativedelta +from odoo import fields, models, _ +from odoo.exceptions import UserError + + +class AccountAgedTrialBalance(models.TransientModel): + _name = 'account.aged.trial.balance' + _inherit = 'account.common.partner.report' + _description = 'Account Aged Trial balance Report' + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_aged_trail_report_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_aged_trail_report_section_rel", + column1="main_report_id", + column2="sub_report_id") + name = fields.Char(string="Account Aged Trial balance Report", default="Account Aged Trial balance Report", required=True, translate=True) + + journal_ids = fields.Many2many('account.journal', string='Journals', + required=True) + period_length = fields.Integer(string='Period Length (days)', + required=True, default=30) + date_from = fields.Date(default=lambda *a: time.strftime('%Y-%m-%d')) + + def _print_report(self, data): + res = {} + data = self.pre_print_report(data) + data['form'].update(self.read(['period_length'])[0]) + period_length = data['form']['period_length'] + if period_length <= 0: + raise UserError(_('You must set a period length greater than 0.')) + if not data['form']['date_from']: + raise UserError(_('You must set a start date.')) + + start = data['form']['date_from'] + + for i in range(5)[::-1]: + stop = start - relativedelta(days=period_length - 1) + res[str(i)] = { + 'name': (i != 0 and ( + str((5 - (i + 1)) * period_length) + '-' + str( + (5 - i) * period_length)) or ( + '+' + str(4 * period_length))), + 'stop': start.strftime('%Y-%m-%d'), + 'start': (i != 0 and stop.strftime('%Y-%m-%d') or False), + } + start = stop - relativedelta(days=1) + data['form'].update(res) + return self.env.ref( + 'base_accounting_kit.action_report_aged_partner_balance').with_context( + landscape=True).report_action(self, data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance_views.xml new file mode 100644 index 000000000..5c776abba --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_aged_trial_balance_views.xml @@ -0,0 +1,39 @@ + + + + + account.aged.trial.balance.view.form + account.aged.trial.balance + +
+ + + + + + + +
+
+
+
+
+ + + Aged Partner Balance + account.aged.trial.balance + ir.actions.act_window + list,form + + {} + new + + + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_balance_report.py b/demo_addons_modules/base_accounting_kit/wizard/account_balance_report.py new file mode 100644 index 000000000..4aa7171fc --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_balance_report.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models, _ + + +class AccountBalanceReport(models.TransientModel): + _name = 'account.balance.report' + _inherit = "account.common.account.report" + _description = 'Trial Balance Report' + + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_balance_report_section_rel", + column1="main_report_id", + column2="sub_report_id") + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_balance_report_section_rel", + column1="sub_report_id", + column2="main_report_id") + name = fields.Char(string="Trial Balance", default="Trial Balance", required=True, translate=True) + journal_ids = fields.Many2many('account.journal', + 'account_balance_report_journal_rel', + 'account_id', 'journal_id', + string='Journals', required=True, + default=[]) + + @api.model + def _get_report_name(self): + period_id = self._get_selected_period_id() + return self.env['consolidation.period'].browse(period_id)['display_name'] or _("Trial Balance") + + def _print_report(self, data): + data = self.pre_print_report(data) + records = self.env[data['model']].browse(data.get('ids', [])) + return self.env.ref( + 'base_accounting_kit.action_report_trial_balance').report_action( + records, data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_balance_report_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_balance_report_views.xml new file mode 100644 index 000000000..8c36e07aa --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_balance_report_views.xml @@ -0,0 +1,32 @@ + + + + + account.balance.report.view.form.inherit.base.accounting.kit + account.balance.report + + + + + + + + + + + + Trial Balance + account.balance.report + ir.actions.act_window + form + + new + + + + + diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report.py b/demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report.py new file mode 100644 index 000000000..baf77a77a --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from datetime import date +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class BankBookWizard(models.TransientModel): + _name = 'account.bank.book.report' + _description = 'Account Bank Book Report' + + company_id = fields.Many2one('res.company', string='Company', + readonly=True, + default=lambda self: self.env.company) + target_move = fields.Selection([('posted', 'All Posted Entries'), + ('all', 'All Entries')], + string='Target Moves', required=True, + default='posted') + date_from = fields.Date(string='Start Date', default=date.today(), + required=True) + date_to = fields.Date(string='End Date', default=date.today(), + required=True) + display_account = fields.Selection( + [('all', 'All'), ('movement', 'With movements'), + ('not_zero', 'With balance is not equal to 0')], + string='Display Accounts', required=True, default='movement') + sortby = fields.Selection( + [('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], + string='Sort by', required=True, default='sort_date') + initial_balance = fields.Boolean(string='Include Initial Balances', + help='If you selected date, this field allow you to add a ' + 'row to display the amount of debit/credit/balance that ' + 'precedes the filter you\'ve set.') + + def _get_default_account_ids(self): + journals = self.env['account.journal'].search([('type', '=', 'bank')]) + accounts = [] + for journal in journals: + accounts.append(journal.default_account_id.id) + return accounts + + account_ids = fields.Many2many('account.account', + 'account_report_bankbook_account_rel', + 'report_id', 'account_id', + 'Accounts', + default=_get_default_account_ids) + journal_ids = fields.Many2many('account.journal', + 'account_report_bankbook_journal_rel', + 'account_id', 'journal_id', + string='Journals', required=True, + default=lambda self: self.env[ + 'account.journal'].search([])) + + @api.onchange('account_ids') + def onchange_account_ids(self): + if self.account_ids: + journals = self.env['account.journal'].search( + [('type', '=', 'bank')]) + accounts = [] + for journal in journals: + accounts.append(journal.default_account_id.id) + domain = {'account_ids': [('id', 'in', accounts)]} + return {'domain': domain} + + def _build_contexts(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form'][ + 'journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form'][ + 'target_move'] or '' + result['date_from'] = data['form']['date_from'] or False + result['date_to'] = data['form']['date_to'] or False + result['strict_range'] = True if result['date_from'] else False + return result + + def check_report(self): + self.ensure_one() + if self.initial_balance and not self.date_from: + raise UserError(_("You must choose a Start Date")) + data = {} + data['ids'] = self.env.context.get('active_ids', []) + data['model'] = self.env.context.get('active_model', 'ir.ui.menu') + data['form'] = self.read( + ['date_from', 'date_to', 'journal_ids', 'target_move', + 'display_account', + 'account_ids', 'sortby', 'initial_balance'])[0] + used_context = self._build_contexts(data) + data['form']['used_context'] = dict(used_context, + lang=self.env.context.get( + 'lang') or 'en_US') + return self.env.ref( + 'base_accounting_kit.action_report_bank_book').report_action(self, + data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report_views.xml new file mode 100644 index 000000000..876c5eeb3 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_bank_book_report_views.xml @@ -0,0 +1,42 @@ + + + + + account.bank.book.report.view.form + account.bank.book.report + +
+ + + + + + + + + + + + + + +
+
+ +
+
+ + + Bank Book Report + ir.actions.act_window + account.bank.book.report + + form + new + + + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report.py b/demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report.py new file mode 100644 index 000000000..38a3a9598 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from datetime import date +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class CashBookWizard(models.TransientModel): + _name = 'account.cash.book.report' + _description = 'Account Cash Book Report' + + company_id = fields.Many2one('res.company', string='Company', + readonly=True, + default=lambda self: self.env.company) + target_move = fields.Selection([('posted', 'All Posted Entries'), + ('all', 'All Entries')], string='Target Moves', required=True, + default='posted') + date_from = fields.Date(string='Start Date', default=date.today(), + required=True) + date_to = fields.Date(string='End Date', default=date.today(), + required=True) + display_account = fields.Selection( + [('all', 'All'), ('movement', 'With movements'), + ('not_zero', 'With balance is not equal to 0')], + string='Display Accounts', required=True, default='movement') + sortby = fields.Selection( + [('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], + string='Sort by', + required=True, default='sort_date') + initial_balance = fields.Boolean(string='Include Initial Balances', + help='If you selected date, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.') + + def _get_default_account_ids(self): + journals = self.env['account.journal'].search([('type', '=', 'cash')]) + accounts = [] + for journal in journals: + accounts.append(journal.default_account_id.id) + return accounts + + account_ids = fields.Many2many('account.account', + 'account_report_cashbook_account_rel', + 'report_id', 'account_id', + 'Accounts', + default=_get_default_account_ids) + journal_ids = fields.Many2many('account.journal', + 'account_report_cashbook_journal_rel', + 'account_id', 'journal_id', + string='Journals', required=True, + default=lambda self: self.env[ + 'account.journal'].search([])) + + @api.onchange('account_ids') + def onchange_account_ids(self): + if self.account_ids: + journals = self.env['account.journal'].search( + [('type', '=', 'cash')]) + accounts = [] + for journal in journals: + accounts.append(journal.default_account_id.id) + domain = {'account_ids': [('id', 'in', accounts)]} + return {'domain': domain} + + def _build_contexts(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form'][ + 'journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form'][ + 'target_move'] or '' + result['date_from'] = data['form']['date_from'] or False + result['date_to'] = data['form']['date_to'] or False + result['strict_range'] = True if result['date_from'] else False + return result + + def check_report(self): + self.ensure_one() + if self.initial_balance and not self.date_from: + raise UserError(_("You must choose a Start Date")) + data = {} + data['ids'] = self.env.context.get('active_ids', []) + data['model'] = self.env.context.get('active_model', 'ir.ui.menu') + data['form'] = self.read( + ['date_from', 'date_to', 'journal_ids', 'target_move', + 'display_account', + 'account_ids', 'sortby', 'initial_balance'])[0] + used_context = self._build_contexts(data) + data['form']['used_context'] = dict(used_context, + lang=self.env.context.get( + 'lang') or 'en_US') + return self.env.ref( + 'base_accounting_kit.action_report_cash_book').report_action(self, + data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report_views.xml new file mode 100644 index 000000000..0f1b481e4 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_cash_book_report_views.xml @@ -0,0 +1,42 @@ + + + + + account.cash.book.report.view.form + account.cash.book.report + +
+ + + + + + + + + + + + + + +
+
+ +
+
+ + + Cash Book Report + ir.actions.act_window + account.cash.book.report + + form + new + + + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_common_partner_report.py b/demo_addons_modules/base_accounting_kit/wizard/account_common_partner_report.py new file mode 100644 index 000000000..d892736a3 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_common_partner_report.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models +from odoo.tools.misc import get_lang + + +class AccountingCommonPartnerReport(models.TransientModel): + _name = 'account.common.partner.report' + _inherit = "account.report" + _description = 'Account Common Partner Report' + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_common_parnter_report_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_common_parnter_report_section_rel", + column1="main_report_id", + column2="sub_report_id") + company_id = fields.Many2one('res.company', string='Company', required=True, readonly=True, + default=lambda self: self.env.company) + journal_ids = fields.Many2many( + comodel_name='account.journal', + string='Journals', + required=True, + default=lambda self: self.env['account.journal'].search([('company_id', '=', self.company_id.id)]), + domain="[('company_id', '=', company_id)]", + ) + date_from = fields.Date(string='Start Date') + date_to = fields.Date(string='End Date') + target_move = fields.Selection([('posted', 'All Posted Entries'), + ('all', 'All Entries'), + ], string='Target Moves', required=True, default='posted') + + result_selection = fields.Selection([('customer', 'Receivable Accounts'), + ('supplier', 'Payable Accounts'), + ('customer_supplier', + 'Receivable and Payable Accounts') + ], string="Partner's", required=True, + default='customer') + + def _build_contexts(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form'][ + 'journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form'][ + 'target_move'] or '' + result['date_from'] = data['form']['date_from'] or False + result['date_to'] = data['form']['date_to'] or False + result['strict_range'] = True if result['date_from'] else False + return result + + def check_report(self): + self.ensure_one() + data = {} + data['ids'] = self.env.context.get('active_ids', []) + data['model'] = self.env.context.get('active_model', 'ir.ui.menu') + data['form'] = self.read(['date_from', 'date_to', 'journal_ids', 'target_move', 'company_id'])[0] + used_context = self._build_contexts(data) + data['form']['used_context'] = dict(used_context, lang=get_lang(self.env).code) + return self.with_context(discard_logo_check=True)._print_report(data) + + def _print_report(self, data): + data['form'].update(self.read( + ['date_from_cmp', 'debit_credit', 'date_to_cmp', 'filter_cmp', + 'account_report_id', 'enable_filter', 'label_filter', + 'target_move'])[0]) + return self.env.ref( + 'base_accounting_kit.action_report_cash_flow').report_action(self, + data=data, + config=False) + + def pre_print_report(self, data): + data['form'].update(self.read(['result_selection'])[0]) + return data diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_day_book_report.py b/demo_addons_modules/base_accounting_kit/wizard/account_day_book_report.py new file mode 100644 index 000000000..ae0cf8c74 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_day_book_report.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from datetime import date +from odoo import fields, models + + +class DayBookWizard(models.TransientModel): + _name = 'account.day.book.report' + _description = 'Account Day Book Report' + + company_id = fields.Many2one('res.company', string='Company', + readonly=True, + default=lambda self: self.env.company) + journal_ids = fields.Many2many('account.journal', string='Journals', + required=True, + default=lambda self: self.env[ + 'account.journal'].search([])) + target_move = fields.Selection([('posted', 'All Posted Entries'), + ('all', 'All Entries')], string='Target Moves', required=True, + default='posted') + + account_ids = fields.Many2many('account.account', + 'account_report_daybook_account_rel', + 'report_id', 'account_id', + 'Accounts') + + date_from = fields.Date(string='Start Date', default=date.today(), + required=True) + date_to = fields.Date(string='End Date', default=date.today(), + required=True) + + def _build_contexts(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form'][ + 'journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form'][ + 'target_move'] or '' + result['date_from'] = data['form']['date_from'] or False + result['date_to'] = data['form']['date_to'] or False + result['strict_range'] = True if result['date_from'] else False + return result + + def check_report(self): + self.ensure_one() + data = {} + data['ids'] = self.env.context.get('active_ids', []) + data['model'] = self.env.context.get('active_model', 'ir.ui.menu') + data['form'] = \ + self.read(['date_from', 'date_to', 'journal_ids', 'target_move', + 'account_ids'])[0] + used_context = self._build_contexts(data) + data['form']['used_context'] = dict(used_context, + lang=self.env.context.get( + 'lang') or 'en_US') + return self.env.ref( + 'base_accounting_kit.day_book_pdf_report').report_action(self, + data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_day_book_report_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_day_book_report_views.xml new file mode 100644 index 000000000..a4ff10b88 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_day_book_report_views.xml @@ -0,0 +1,39 @@ + + + + + account.day.book.report.view.form + account.day.book.report + +
+ + + + + + + + + + + +
+
+ +
+
+ + + Day Book Report + ir.actions.act_window + account.day.book.report + + form + new + + + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_lock_date.py b/demo_addons_modules/base_accounting_kit/wizard/account_lock_date.py new file mode 100644 index 000000000..18546336b --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_lock_date.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models, SUPERUSER_ID, _ +from odoo.exceptions import UserError + + +class AccountUpdateLockDate(models.TransientModel): + _name = 'account.lock.date' + _description = 'Lock date for accounting' + + company_id = fields.Many2one(comodel_name='res.company', string="Company", + required=True) + sale_lock_date = fields.Date(string="Sales Lock Date", help='Prevents creating and modifying invoices up to the date.') + purchase_lock_date = fields.Date(string="Purchase Lock date", help='Prevents creating and modifying bills up to the date.') + hard_lock_date = fields.Date(string="Lock Everyone", + help="No users, including Advisers, can edit accounts prior to and " + "inclusive of this date. Use it for fiscal year locking for " + "example.") + @api.model + def default_get(self, field_list): + res = super(AccountUpdateLockDate, self).default_get(field_list) + company = self.env.company + res.update({ + 'company_id': company.id, + 'sale_lock_date': company.sale_lock_date, + 'purchase_lock_date': company.purchase_lock_date, + 'hard_lock_date': company.hard_lock_date, + }) + return res + + def _check_execute_allowed(self): + self.ensure_one() + has_adviser_group = self.env.user.has_group( + 'account.group_account_manager') + if not (has_adviser_group or self.env.uid == SUPERUSER_ID): + raise UserError(_("You are not allowed to execute this action.")) + + def execute(self): + self.ensure_one() + self._check_execute_allowed() + self.company_id.sudo().write({ + 'sale_lock_date': self.sale_lock_date, + 'purchase_lock_date': self.purchase_lock_date, + 'hard_lock_date': self.hard_lock_date, + }) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_lock_date_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_lock_date_views.xml new file mode 100644 index 000000000..33c6efa14 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_lock_date_views.xml @@ -0,0 +1,46 @@ + + + + + account.lock.date.view.form + account.lock.date + +
+ + + +
+
+
+
+
+ + + Lock your Fiscal Period + account.lock.date + form + new + + + + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_print_journal.py b/demo_addons_modules/base_accounting_kit/wizard/account_print_journal.py new file mode 100644 index 000000000..68a305485 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_print_journal.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class AccountPrintJournal(models.TransientModel): + _name = "account.print.journal" + _inherit = "account.common.journal.report" + _description = "Account Print Journal" + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_common_print_report_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_common_print_report_section_rel", + column1="main_report_id", + column2="sub_report_id") + name = fields.Char(string="Journal Audit", default="Journal Audit", required=True, translate=True) + sort_selection = fields.Selection( + [('date', 'Date'), ('move_name', 'Journal Entry Number')], + 'Entries Sorted by', required=True, default='move_name') + journal_ids = fields.Many2many('account.journal', string='Journals', + required=True, + default=lambda self: self.env[ + 'account.journal'].search( + [('type', 'in', ['sale', 'purchase'])])) + + def _print_report(self, data): + data = self.pre_print_report(data) + data['form'].update({'sort_selection': self.sort_selection}) + return self.env.ref( + 'base_accounting_kit.action_report_journal').with_context( + landscape=True).report_action(self, data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_print_journal_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_print_journal_views.xml new file mode 100644 index 000000000..24f945712 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_print_journal_views.xml @@ -0,0 +1,32 @@ + + + + + account.print.journal.view.form.inherit.base.accounting.kit + account.print.journal + + + + + + + + + + + + Journals Audit + ir.actions.act_window + account.print.journal + form + + new + + + + diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger.py b/demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger.py new file mode 100644 index 000000000..40441e1a1 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models, _ +from odoo.exceptions import UserError + + +class AccountReportGeneralLedger(models.TransientModel): + _name = "account.report.general.ledger" + _inherit = "account.common.account.report" + _description = "General Ledger Report" + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_report_general_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_report_general_section_rel", + column1="main_report_id", + column2="sub_report_id") + name = fields.Char(string="General Ledger", default="General Ledger", required=True, translate=True) + initial_balance = fields.Boolean(string='Include Initial Balances', + help='If you selected date, this field ' + 'allow you to add a row to display ' + 'the amount of debit/credit/balance ' + 'that precedes the filter you\'ve ' + 'set.') + sortby = fields.Selection( + [('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], + string='Sort by', required=True, default='sort_date') + journal_ids = fields.Many2many('account.journal', + 'account_report_general_ledger_journal_rel', + 'account_id', 'journal_id', + string='Journals', required=True) + + def _print_report(self, data): + data = self.pre_print_report(data) + data['form'].update(self.read(['initial_balance', 'sortby'])[0]) + if data['form'].get('initial_balance') and not data['form'].get( + 'date_from'): + raise UserError(_("You must define a Start Date")) + records = self.env[data['model']].browse(data.get('ids', [])) + return self.env.ref( + 'base_accounting_kit.action_report_general_ledger').with_context( + landscape=True).report_action(records, data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger_views.xml new file mode 100644 index 000000000..02685eb84 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_report_general_ledger_views.xml @@ -0,0 +1,36 @@ + + + + + account.report.general.ledger.view.form.inherit.base.accounting.kit + account.report.general.ledger + + + + + + + + + + + + + General Ledger + ir.actions.act_window + account.report.general.ledger + form + + new + + report + + + + diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger.py b/demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger.py new file mode 100644 index 000000000..96077abbb --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class AccountPartnerLedger(models.TransientModel): + _name = "account.report.partner.ledger" + _inherit = "account.common.partner.report" + _description = "Account Partner Ledger" + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_report_partner_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_report_partner_section_rel", + column1="main_report_id", + column2="sub_report_id") + name = fields.Char(string="Partner Ledger Report", default="Partner Ledger Report", required=True, translate=True) + amount_currency = fields.Boolean("With Currency", + help="It adds the currency column on report if the " + "currency differs from the company currency.") + reconciled = fields.Boolean('Reconciled Entries') + + def _print_report(self, data): + data = self.pre_print_report(data) + data['form'].update({'reconciled': self.reconciled, + 'amount_currency': self.amount_currency}) + return self.env.ref( + 'base_accounting_kit.action_report_partnerledger').report_action( + self, data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger_views.xml b/demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger_views.xml new file mode 100644 index 000000000..42a8ca547 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/account_report_partner_ledger_views.xml @@ -0,0 +1,32 @@ + + + + + account.report.partner.ledger.view.form.inherit.base.accounting.kit + account.report.partner.ledger + + + + + + + + + + + + + + Partner Ledger + account.report.partner.ledger + ir.actions.act_window + form + + new + + + + diff --git a/demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation.py b/demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation.py new file mode 100644 index 000000000..f800d4c68 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models, _ + + +class AssetDepreciationConfirmationWizard(models.TransientModel): + _name = "asset.depreciation.confirmation" + _description = "Asset Depreciation Confirmation" + + date = fields.Date('Account Date', required=True, + help="Choose the period for which you want to automatically " + "post the depreciation lines of running assets", + default=fields.Date.context_today) + + def asset_compute(self): + self.ensure_one() + context = self._context + created_move_ids = self.env['account.asset.asset'].sudo().compute_generated_entries(self.date, asset_type=context.get('asset_type')) + moves = self.env['account.move'].browse(created_move_ids) + auto_post_draft_moves = moves.filtered(lambda move: move.state == 'draft' and move.auto_post) + auto_post_draft_moves.write({'auto_post': 'at_date'}) + return { + 'name': _('Created Asset Moves') if context.get('asset_type') == 'purchase' else _('Created Revenue Moves'), + 'view_mode': 'list,form', + 'res_model': 'account.move', + 'view_id': False, + 'domain': "[('id','in',[" + ','.join(str(id) for id in created_move_ids) + "])]", + 'type': 'ir.actions.act_window', + } + + diff --git a/demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation_views.xml b/demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation_views.xml new file mode 100644 index 000000000..7cdb6715c --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/asset_depreciation_confirmation_views.xml @@ -0,0 +1,44 @@ + + + + + asset.depreciation.confirmation.view.form + asset.depreciation.confirmation + +
+
+

+ This wizard will post installment/depreciation lines for the selected month.
+ This will generate journal entries for all related installment lines on this period of asset/revenue recognition as well. +

+
+ + + +
+
+
+
+
+ + + Post Depreciation Lines + asset.depreciation.confirmation + list,form + + new + {'asset_type': 'purchase'} + + + + + + + + + + + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/asset_modify.py b/demo_addons_modules/base_accounting_kit/wizard/asset_modify.py new file mode 100644 index 000000000..5a36f56f1 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/asset_modify.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from lxml import etree +from odoo import api, fields, models, _ + + +class AssetModify(models.TransientModel): + _name = 'asset.modify' + _description = 'Modify Asset' + + name = fields.Text(string='Reason', required=True) + method_number = fields.Integer(string='Number of Depreciations', required=True) + method_period = fields.Integer(string='Period Length') + method_end = fields.Date(string='Ending date') + asset_method_time = fields.Char(compute='_get_asset_method_time', + string='Asset Method Time', readonly=True) + + def _get_asset_method_time(self): + if self.env.context.get('active_id'): + asset = self.env['account.asset.asset'].browse(self.env.context.get('active_id')) + self.asset_method_time = asset.method_time + + @api.model + def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): + result = super(AssetModify, self).fields_view_get(view_id, view_type, toolbar=toolbar, submenu=submenu) + asset_id = self.env.context.get('active_id') + active_model = self.env.context.get('active_model') + if active_model == 'account.asset.asset' and asset_id: + asset = self.env['account.asset.asset'].browse(asset_id) + doc = etree.XML(result['arch']) + if asset.method_time == 'number' and doc.xpath("//field[@name='method_end']"): + node = doc.xpath("//field[@name='method_end']")[0] + node.set('invisible', '1') + # setup_modifiers(node, result['fields']['method_end']) + elif asset.method_time == 'end' and doc.xpath("//field[@name='method_number']"): + node = doc.xpath("//field[@name='method_number']")[0] + node.set('invisible', '1') + # setup_modifiers(node, result['fields']['method_number']) + result['arch'] = etree.tostring(doc, encoding='unicode') + return result + + @api.model + def default_get(self, fields): + res = super(AssetModify, self).default_get(fields) + asset_id = self.env.context.get('active_id') + asset = self.env['account.asset.asset'].browse(asset_id) + if 'name' in fields: + res.update({'name': asset.name}) + if 'method_number' in fields and asset.method_time == 'number': + res.update({'method_number': asset.method_number}) + if 'method_period' in fields: + res.update({'method_period': asset.method_period}) + if 'method_end' in fields and asset.method_time == 'end': + res.update({'method_end': asset.method_end}) + if self.env.context.get('active_id'): + active_asset = self.env['account.asset.asset'].browse(self.env.context.get('active_id')) + res['asset_method_time'] = active_asset.method_time + return res + + def modify(self): + """ Modifies the duration of asset for calculating depreciation + and maintains the history of old values, in the chatter. + """ + asset_id = self.env.context.get('active_id', False) + asset = self.env['account.asset.asset'].browse(asset_id) + old_values = { + 'method_number': asset.method_number, + 'method_period': asset.method_period, + 'method_end': asset.method_end, + } + asset_vals = { + 'method_number': self.method_number, + 'method_period': self.method_period, + 'method_end': self.method_end, + } + asset.write(asset_vals) + asset.compute_depreciation_board() + tracked_fields = self.env['account.asset.asset'].fields_get(['method_number', 'method_period', 'method_end']) + changes, tracking_value_ids = asset._mail_track(tracked_fields, old_values) + if changes: + asset.message_post(subject=_('Depreciation board modified'), body=self.name, tracking_value_ids=tracking_value_ids) + return {'type': 'ir.actions.act_window_close'} diff --git a/demo_addons_modules/base_accounting_kit/wizard/asset_modify_views.xml b/demo_addons_modules/base_accounting_kit/wizard/asset_modify_views.xml new file mode 100644 index 000000000..250c21f6e --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/asset_modify_views.xml @@ -0,0 +1,39 @@ + + + + + asset.modify.view.form + asset.modify + +
+ + + + + + + + + + +
+
+ +
+
+ + + Modify Asset + asset.modify + ir.actions.act_window + list,form + + new + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/cash_flow_report.py b/demo_addons_modules/base_accounting_kit/wizard/cash_flow_report.py new file mode 100644 index 000000000..6fbf2f6d0 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/cash_flow_report.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models + + +class AccountingReport(models.TransientModel): + _name = "cash.flow.report" + _inherit = "account.report" + _description = "Cash Flow Report" + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_cash_flow_report_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_cash_flow_report_section_rel", + column1="main_report_id", + column2="sub_report_id") + name = fields.Char(string="Cash Flow Report", default="Cash Flow Report", required=True, translate=True) + date_from = fields.Date(string='Start Date') + date_to = fields.Date(string='End Date') + company_id = fields.Many2one('res.company', string='Company', required=True, readonly=True, default=lambda self: self.env.company) + target_move = fields.Selection([('posted', 'All Posted Entries'), + ('all', 'All Entries'), + ], string='Target Moves', required=True, default='posted') + journal_ids = fields.Many2many( + comodel_name='account.journal', + string='Journals', + required=True, + default=lambda self: self.env['account.journal'].search([('company_id', '=', self.company_id.id)]), + domain="[('company_id', '=', company_id)]", + ) + + @api.model + def _get_account_report(self): + reports = [] + if self._context.get('active_id'): + menu = self.env['ir.ui.menu'].browse( + self._context.get('active_id')).name + reports = self.env['account.financial.report'].search( + [('name', 'ilike', menu)]) + return reports and reports[0] or False + + enable_filter = fields.Boolean(string='Enable Comparison') + account_report_id = fields.Many2one('account.financial.report', + string='Account Reports', + required=True, + default=_get_account_report) + label_filter = fields.Char(string='Column Label', + help="This label will be displayed on report to show the balance" + " computed for the given comparison filter.") + filter_cmp = fields.Selection( + [('filter_no', 'No Filters'), ('filter_date', 'Date')], + string='Filter by', required=True, default='filter_no') + date_from_cmp = fields.Date(string='Date Start') + date_to_cmp = fields.Date(string='Date End') + debit_credit = fields.Boolean(string='Display Debit/Credit Columns', + help="This option allows you to get more details about the way your balances are computed. Because it is space consuming, we do not allow to use it while doing a comparison.") + + def _build_comparison_context(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form'][ + 'journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form'][ + 'target_move'] or '' + if data['form']['filter_cmp'] == 'filter_date': + result['date_from'] = data['form']['date_from_cmp'] + result['date_to'] = data['form']['date_to_cmp'] + result['strict_range'] = True + return result + + def _build_contexts(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form']['journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or '' + result['date_from'] = data['form']['date_from'] or False + result['date_to'] = data['form']['date_to'] or False + result['strict_range'] = True if result['date_from'] else False + result['company_id'] = data['form']['company_id'][0] or False + return result + + # @api.multi + def check_report(self): + res = super(AccountingReport, self).check_report() + data = {} + data['form'] = self.read( + ['account_report_id', 'date_from_cmp', 'date_to_cmp', + 'journal_ids', 'filter_cmp', 'target_move'])[0] + for field in ['account_report_id']: + if isinstance(data['form'][field], tuple): + data['form'][field] = data['form'][field][0] + comparison_context = self._build_comparison_context(data) + res['data']['form']['comparison_context'] = comparison_context + return res + + def _print_report(self, data): + raise NotImplementedError() + + def _print_report(self, data): + data['form'].update(self.read( + ['date_from_cmp', 'debit_credit', 'date_to_cmp', 'filter_cmp', + 'account_report_id', 'enable_filter', 'label_filter', + 'target_move'])[0]) + return self.env.ref( + 'base_accounting_kit.action_report_cash_flow').report_action(self, + data=data, + config=False) diff --git a/demo_addons_modules/base_accounting_kit/wizard/cash_flow_report_views.xml b/demo_addons_modules/base_accounting_kit/wizard/cash_flow_report_views.xml new file mode 100644 index 000000000..671cbd52d --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/cash_flow_report_views.xml @@ -0,0 +1,54 @@ + + + + + cash.flow.report.view.form.inherit.base.accounting.kit + cash.flow.report + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cash Flow Statement + cash.flow.report + ir.actions.act_window + form + + new + + + + + diff --git a/demo_addons_modules/base_accounting_kit/wizard/financial_report.py b/demo_addons_modules/base_accounting_kit/wizard/financial_report.py new file mode 100644 index 000000000..4a5ee4986 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/financial_report.py @@ -0,0 +1,438 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +import re +from odoo import api, models, fields + + +class FinancialReport(models.TransientModel): + _name = "financial.report" + _inherit = "account.report" + _description = "Financial Reports" + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_financial_report_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_financial_report_section_rel", + column1="main_report_id", + column2="sub_report_id") + name = fields.Char(string="Financial Report", default="Financial Report", required=True, translate=True) + + target_move = fields.Selection([('posted', 'All Posted Entries'), + ('all', 'All Entries'), + ], string='Target Moves', required=True, default='posted') + + view_format = fields.Selection([ + ('vertical', 'Vertical'), + ('horizontal', 'Horizontal')], + default='vertical', + string="Format") + + + def _build_contexts(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form'][ + 'journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form'][ + 'target_move'] or '' + result['date_from'] = data['form']['date_from'] or False + result['date_to'] = data['form']['date_to'] or False + result['strict_range'] = True if result['date_from'] else False + return result + + @api.model + def _get_account_report(self): + reports = [] + if self._context.get('active_id'): + menu = self.env['ir.ui.menu'].browse( + self._context.get('active_id')).name + reports = self.env['account.financial.report'].search([ + ('name', 'ilike', menu)]) + return reports and reports[0] or False + + enable_filter = fields.Boolean( + string='Enable Comparison', + default=False) + account_report_id = fields.Many2one( + 'account.financial.report', + string='Account Reports', + required=True) + + date_from = fields.Date(string='Start Date') + date_to = fields.Date(string='End Date') + debit_credit = fields.Boolean( + string='Display Debit/Credit Columns', + default=True, + help="This option allows you to" + " get more details about the " + "way your balances are computed." + " Because it is space consuming," + " we do not allow to use it " + "while doing a comparison.") + company_id = fields.Many2one( + 'res.company', + string='Company', + index=True, + default=lambda self: self.env.company.id) + + def view_report_pdf(self): + """This function will be executed when we click the view button + from the wizard. Based on the values provided in the wizard, this + function will print pdf report""" + self.ensure_one() + data = dict() + data['ids'] = self.env.context.get('active_ids', []) + data['model'] = self.env.context.get('active_model', 'ir.ui.menu') + data['form'] = self.read( + ['date_from', 'enable_filter', 'debit_credit', 'date_to', + 'account_report_id', 'target_move', 'view_format', + 'company_id'])[0] + used_context = self._build_contexts(data) + data['form']['used_context'] = dict( + used_context, + lang=self.env.context.get('lang') or 'en_US') + + report_lines = self.get_account_lines(data['form']) + # find the journal items of these accounts + journal_items = self.find_journal_items(report_lines, data['form']) + + def set_report_level(rec): + """This function is used to set the level of each item. + This level will be used to set the alignment in the dynamic reports.""" + level = 1 + if not rec['parent']: + return level + else: + for line in report_lines: + key = 'a_id' if line['type'] == 'account' else 'id' + if line[key] == rec['parent']: + return level + set_report_level(line) + + # finding the root + for item in report_lines: + item['balance'] = round(item['balance'], 2) + if not item['parent']: + item['level'] = 1 + parent = item + report_name = item['name'] + id = item['id'] + report_id = item['r_id'] + else: + item['level'] = set_report_level(item) + currency = self._get_currency() + data['currency'] = currency + data['journal_items'] = journal_items + data['report_lines'] = report_lines + # checking view type + return self.env.ref( + 'base_accounting_kit.financial_report_pdf').report_action(self, + data) + + def _compute_account_balance(self, accounts): + """ compute the balance, debit + and credit for the provided accounts + """ + mapping = { + 'balance': + "COALESCE(SUM(debit),0) - COALESCE(SUM(credit), 0)" + " as balance", + 'debit': "COALESCE(SUM(debit), 0) as debit", + 'credit': "COALESCE(SUM(credit), 0) as credit", + } + + res = {} + for account in accounts: + res[account.id] = dict((fn, 0.0) + for fn in mapping.keys()) + if accounts: + tables, where_clause, where_params = ( + self.env['account.move.line']._query_get()) + tables = tables.replace( + '"', '') if tables else "account_move_line" + wheres = [""] + if where_clause.strip(): + wheres.append(where_clause.strip()) + filters = " AND ".join(wheres) + request = ("SELECT account_id as id, " + + ', '.join(mapping.values()) + + " FROM " + tables + + " WHERE account_id IN %s " + + filters + + " GROUP BY account_id") + params = (tuple(accounts._ids),) + tuple(where_params) + self.env.cr.execute(request, params) + for row in self.env.cr.dictfetchall(): + res[row['id']] = row + return res + + def _compute_report_balance(self, reports): + """returns a dictionary with key=the ID of a record and + value=the credit, debit and balance amount + computed for this record. If the record is of type : + 'accounts' : it's the sum of the linked accounts + 'account_type' : it's the sum of leaf accounts with + such an account_type + 'account_report' : it's the amount of the related report + 'sum' : it's the sum of the children of this record + (aka a 'view' record)""" + res = {} + fields = ['credit', 'debit', 'balance'] + for report in reports: + if report.id in res: + continue + res[report.id] = dict((fn, 0.0) for fn in fields) + if report.type == 'accounts': + # it's the sum of the linked accounts + res[report.id]['account'] = self._compute_account_balance( + report.account_ids + ) + for value in \ + res[report.id]['account'].values(): + for field in fields: + res[report.id][field] += value.get(field) + elif report.type == 'account_type': + # it's the sum the leaf accounts + # with such an account type + accounts = self.env['account.account'].search([ + ('account_type', '=', report.account_type_ids) + ]) + if report.name == "Expenses": + accounts = self.env['account.account'].search([ + ('account_type', 'in', ["expense","expense_depreciation","expense_direct_cost"]) + ]) + if report.name == "Liability": + accounts = self.env['account.account'].search([ + ('account_type', 'in', ["liability_payable","equity","liability_current","liability_non_current"]) + ]) + if report.name == "Assets": + accounts = self.env['account.account'].search([ + ('account_type', 'in', ["asset_receivable","asset_cash","asset_current","asset_non_current","asset_prepayments","asset_fixed"]) + ]) + + res[report.id]['account'] = self._compute_account_balance( + accounts) + + for value in res[report.id]['account'].values(): + for field in fields: + res[report.id][field] += value.get(field) + elif report.type == 'account_report' and report.account_report_id: + # it's the amount of the linked report + res2 = self._compute_report_balance(report.account_report_id) + for key, value in res2.items(): + for field in fields: + res[report.id][field] += value[field] + elif report.type == 'sum': + # it's the sum of the children of this account.report + res2 = self._compute_report_balance(report.children_ids) + for key, value in res2.items(): + for field in fields: + res[report.id][field] += value[field] + return res + + def get_account_lines(self, data): + lines = [] + account_report = self.env['account.financial.report'].search([ + ('id', '=', data['account_report_id'][0]) + ]) + child_reports = account_report._get_children_by_order() + res = self.with_context( + data.get('used_context'))._compute_report_balance(child_reports) + if data['enable_filter']: + comparison_res = self._compute_report_balance(child_reports) + for report_id, value in comparison_res.items(): + res[report_id]['comp_bal'] = value['balance'] + report_acc = res[report_id].get('account') + if report_acc: + for account_id, val in \ + comparison_res[report_id].get('account').items(): + report_acc[account_id]['comp_bal'] = val['balance'] + + for report in child_reports: + r_name = str(report.name) + r_name = re.sub('[^0-9a-zA-Z]+', '', r_name) + if report.parent_id: + p_name = str(report.parent_id.name) + p_name = re.sub('[^0-9a-zA-Z]+', '', p_name) + str( + report.parent_id.id) + else: + p_name = False + vals = { + 'r_id': report.id, + 'id': r_name + str(report.id), + 'sequence': report.sequence, + 'parent': p_name, + 'name': report.name, + 'balance': res[report.id]['balance'] * int(report.sign), + 'type': 'report', + 'level': bool( + report.style_overwrite) and report.style_overwrite or + report.level, + 'account_type': report.type or False, + # used to underline the financial report balances + } + if data['debit_credit']: + vals['debit'] = res[report.id]['debit'] + vals['credit'] = res[report.id]['credit'] + + if data['enable_filter']: + vals['balance_cmp'] = res[report.id]['comp_bal'] * int( + report.sign) + + lines.append(vals) + if report.display_detail == 'no_detail': + # the rest of the loop is + # used to display the details of the + # financial report, so it's not needed here. + continue + + if res[report.id].get('account'): + sub_lines = [] + for account_id, value \ + in res[report.id]['account'].items(): + # if there are accounts to display, + # we add them to the lines with a level equals + # to their level in + # the COA + 1 (to avoid having them with a too low level + # that would conflicts with the level of data + # financial reports for Assets, liabilities...) + flag = False + account = self.env['account.account'].browse(account_id) + # new_r_name = str(report.name) + # new_r_name = new_r_name.replace(" ", "-") + "-" + vals = { + 'account': account.id, + 'a_id': account.code + re.sub('[^0-9a-zA-Z]+', 'acnt', + account.name) + str( + account.id), + 'name': account.code + '-' + account.name, + 'balance': value['balance'] * int(report.sign) or 0.0, + 'type': 'account', + 'parent': r_name + str(report.id), + 'level': ( + report.display_detail == 'detail_with_hierarchy' and + 4), + 'account_type': account.account_type, + } + if data['debit_credit']: + vals['debit'] = value['debit'] + vals['credit'] = value['credit'] + for company in account.company_ids: + if not company.currency_id.is_zero( + vals['debit']) or \ + not company.currency_id.is_zero( + vals['credit']): + flag = True + for company in account.company_ids: + if not company.currency_id.is_zero( + vals['balance']): + flag = True + if data['enable_filter']: + vals['balance_cmp'] = value['comp_bal'] * int( + report.sign) + for company in account.company_ids: + if not company.currency_id.is_zero( + vals['balance_cmp']): + flag = True + if flag: + sub_lines.append(vals) + lines += sorted(sub_lines, + key=lambda sub_line: sub_line['name']) + return lines + + def find_journal_items(self, report_lines, form): + cr = self.env.cr + journal_items = [] + for i in report_lines: + if i['type'] == 'account': + account = i['account'] + if form['target_move'] == 'posted': + search_query = ("select aml.id, am.id as j_id, " + "aml.account_id, aml.date, aml.name as " + "label, am.name, (aml.debit-aml.credit) as " + "balance, aml.debit, aml.credit, " + "aml.partner_id from " + "account_move_line aml " + "join account_move am on (aml.move_id=am.id" + " and am.state=%s) where aml.account_id=%s") + vals = [form['target_move']] + else: + search_query = ("select aml.id, am.id as j_id, " + "aml.account_id, aml.date, aml.name as " + "label, am.name, (aml.debit-aml.credit) as " + "balance, aml.debit, aml.credit, " + "aml.partner_id from account_move_line aml" + " join account_move am on " + "(aml.move_id=am.id) where " + "aml.account_id=%s") + vals = [] + if form['date_from'] and form['date_to']: + search_query += " and aml.date>=%s and aml.date<=%s" + vals += [account, form['date_from'], form['date_to']] + elif form['date_from']: + search_query += " and aml.date>=%s" + vals += [account, form['date_from']] + elif form['date_to']: + search_query += " and aml.date<=%s" + vals += [account, form['date_to']] + else: + vals += [account] + cr.execute(search_query, tuple(vals)) + items = cr.dictfetchall() + + for j in items: + temp = j['id'] + j['id'] = re.sub('[^0-9a-zA-Z]+', '', i['name']) + str( + temp) + j['p_id'] = str(i['a_id']) + j['type'] = 'journal_item' + journal_items.append(j) + return journal_items + + @api.model + def _get_currency(self): + journal = self.env['account.journal'].browse( + self.env.context.get('default_journal_id', False)) + if journal.currency_id: + return journal.currency_id.id + return self.env.company.currency_id.symbol + + +class ProfitLossPdf(models.AbstractModel): + """ Abstract model for generating PDF report value and send to template """ + + _name = 'report.base_accounting_kit.report_financial' + _description = 'Financial Report' + + @api.model + def _get_report_values(self, docids, data=None): + """ Provide report values to template """ + ctx = { + 'data': data, + 'journal_items': data['journal_items'], + 'report_lines': data['report_lines'], + 'account_report': data['form']['account_report_id'][1], + 'currency': data['currency'], + } + return ctx diff --git a/demo_addons_modules/base_accounting_kit/wizard/financial_report_views.xml b/demo_addons_modules/base_accounting_kit/wizard/financial_report_views.xml new file mode 100644 index 000000000..4c104048f --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/financial_report_views.xml @@ -0,0 +1,60 @@ + + + + + financial.report.view.form + financial.report + +
+ + + + + + + + + + + + + +
+
+
+
+
+ + + Profit and Loss + financial.report + ir.actions.act_window + form + + new + + + + + Balance Sheet + financial.report + ir.actions.act_window + form + + new + + + + + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/import_bank_statement.py b/demo_addons_modules/base_accounting_kit/wizard/import_bank_statement.py new file mode 100644 index 000000000..80f128398 --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/import_bank_statement.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Akhil Ashok (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +import base64 +import codecs +import openpyxl +import os +from datetime import datetime +from io import BytesIO +from odoo import fields, models, _ +from odoo.exceptions import ValidationError +from ofxparse import OfxParser +from qifparse.parser import QifParser + + +class ImportBankStatement(models.TransientModel): + """ A class to import files as bank statement """ + _name = "import.bank.statement" + _description = "Import button" + _rec_name = "file_name" + + attachment = fields.Binary(string="File", required=True, + help="Choose the file to import") + file_name = fields.Char(string="File Name", help="Name of the file") + journal_id = fields.Many2one('account.journal', string="Journal ID", + help="Journal in which the file importing") + + def action_statement_import(self): + """Function to import csv, xlsx, ofx and qif file format""" + split_tup = os.path.splitext(self.file_name) + if split_tup[1] == '.csv' or split_tup[1] == '.xlsx' or split_tup[ + 1] == '.ofx' or split_tup[1] == '.qif': + if split_tup[1] == '.csv': + # Reading csv file + try: + file = base64.b64decode(self.attachment) + file_string = file.decode('utf-8') + file_string = file_string.split('\n') + except: + raise ValidationError(_("Choose correct file")) + # Skipping the first line + firstline = True + for file_item in file_string: + if firstline: + firstline = False + continue + # Reading the content from csv file + values = file_item.split(',') + if len(values) >= 5: + if values[0] and values[1] and values[4]: + date_obj = str(fields.date.today()) if not values[ + 3] else values[3] + transaction_date = datetime.strptime(date_obj, + "%Y-%m-%d") + partner = self.env['res.partner'].search( + [('name', '=', values[4])]) + if partner: + statement = self.env[ + 'account.bank.statement'].create({ + 'name': values[0], + 'line_ids': [(0, 0, { + 'date': transaction_date, + 'payment_ref': 'csv file', + 'partner_id': partner.id, + 'journal_id': self.journal_id.id, + 'amount': values[1], + 'amount_currency': values[2], + })], + }) + else: + raise ValidationError( + _("Partner does not exist")) + else: + if not values[0]: + raise ValidationError( + _("Account name is not set")) + elif not values[1]: + raise ValidationError(_("Amount is not set")) + elif not values[4]: + date_obj = str(fields.date.today()) if not \ + values[3] else values[3] + transaction_date = datetime.strptime(date_obj, + "%Y-%m-%d") + statement = self.env[ + 'account.bank.statement'].create({ + 'name': values[0], + 'line_ids': [(0, 0, { + 'date': transaction_date, + 'payment_ref': 'csv file', + 'journal_id': self.journal_id.id, + 'amount': values[1], + 'amount_currency': values[2], + })], + }) + else: + raise ValidationError( + _("Invalid row format in CSV file. Ensure all required columns are present.")) + return { + 'type': 'ir.actions.act_window', + 'name': 'Statements', + 'view_mode': 'list', + 'res_model': 'account.bank.statement', + 'res_id': statement.id, + } + elif split_tup[1] == '.xlsx': + # Reading xlsx file + try: + order = openpyxl.load_workbook( + filename=BytesIO(base64.b64decode(self.attachment))) + xl_order = order.active + except: + raise ValidationError(_("Choose correct file")) + for record in xl_order.iter_rows(min_row=2, max_row=None, + min_col=None, + max_col=None, + values_only=True): + line = list(record) + # Reading the content from file + if line[0] and line[1] and line[3]: + partner = self.env['res.partner'].search( + [('name', '=', line[3])]) + date_obj = fields.date.today() if not line[2] else \ + line[2].date() + # Creating record + if partner: + statement = self.env[ + 'account.bank.statement'].create({ + 'name': line[0], + 'line_ids': [ + (0, 0, { + 'date': date_obj, + 'payment_ref': 'xlsx file', + 'partner_id': partner.id, + 'journal_id': self.journal_id.id, + 'amount': line[1], + }), + ], + }) + else: + raise ValidationError(_("Partner not exist")) + else: + if not line[0]: + raise ValidationError( + _("Account name is not set")) + elif not line[1]: + raise ValidationError( + _("Amount is not set")) + elif not line[3]: + date_obj = fields.date.today() if not line[2] else \ + line[2].date() + # Creating record + statement = self.env[ + 'account.bank.statement'].create({ + 'name': line[0], + 'line_ids': [ + (0, 0, { + 'date': date_obj, + 'payment_ref': 'xlsx file', + 'journal_id': self.journal_id.id, + 'amount': line[1], + }), + ], + }) + return { + 'type': 'ir.actions.act_window', + 'name': 'Statements', + 'view_mode': 'list', + 'res_model': 'account.bank.statement', + 'res_id': statement.id, + } + elif split_tup[1] == '.ofx': + # Searching the path of the file + file_attachment = self.env["ir.attachment"].search( + ['|', ('res_field', '!=', False), + ('res_field', '=', False), + ('res_id', '=', self.id), + ('res_model', '=', 'import.bank.statement')], + limit=1) + file_path = file_attachment._full_path( + file_attachment.store_fname) + # Parsing the file + try: + with codecs.open(file_path) as fileobj: + ofx_file = OfxParser.parse(fileobj) + except: + raise ValidationError(_("Wrong file format")) + if not ofx_file.account: + raise ValidationError( + _("No account information found in OFX file.")) + if not ofx_file.account.statement: + raise ValidationError( + _("No statement information found in OFX file.")) + statement_list = [] + # Reading the content from file + for transaction in ofx_file.account.statement.transactions: + if transaction.type == "debit" and transaction.amount != 0: + payee = transaction.payee + amount = transaction.amount + date = transaction.date + if not date: + date = fields.date.today() + partner = self.env['res.partner'].search( + [('name', '=', payee)]) + if partner: + statement_list.append([partner.id, amount, date]) + else: + raise ValidationError(_("Partner not exist")) + if transaction.type == "credit" and transaction.amount != 0: + payee = transaction.payee + amount = transaction.amount + date = transaction.date + if not date: + date = fields.date.today() + partner = self.env['res.partner'].search( + [('name', '=', payee)]) + if partner: + statement_list.append([partner.id, amount, date]) + else: + raise ValidationError(_("Partner not exist")) + # Creating record + if statement_list: + for item in statement_list: + statement = self.env['account.bank.statement'].create({ + 'name': ofx_file.account.routing_number, + 'line_ids': [ + (0, 0, { + 'date': item[2], + 'payment_ref': 'ofx file', + 'partner_id': item[0], + 'journal_id': self.journal_id.id, + 'amount': item[1], + }), + ], + }) + return { + 'type': 'ir.actions.act_window', + 'name': 'Statements', + 'view_mode': 'list', + 'res_model': 'account.bank.statement', + 'res_id': statement.id, + } + else: + raise ValidationError(_("There is no data to import")) + elif split_tup[1] == '.qif': + # Searching the path of qif file + file_attachment = self.env["ir.attachment"].search( + ['|', ('res_field', '!=', False), + ('res_field', '=', False), + ('res_id', '=', self.id), + ('res_model', '=', 'import.bank.statement')], + limit=1) + file_path = file_attachment._full_path( + file_attachment.store_fname) + # Parsing the qif file + try: + parser = QifParser() + with open(file_path, 'r') as qiffile: + qif = parser.parse(qiffile) + except: + raise ValidationError(_("Wrong file format")) + file_string = str(qif) + file_item = file_string.split('^') + file_item[-1] = file_item[-1].rstrip('\n') + if file_item[-1] == '': + file_item.pop() + statement_list = [] + for item in file_item: + if not item.startswith('!Type:Bank'): + item = '!Type:Bank' + item + data = item.split('\n') + # Reading the file content + date_entry = data[1][1:] + amount = float(data[2][1:]) + payee = data[3][1:] + if amount and payee: + if not date_entry: + date_entry = str(fields.date.today()) + date_object = datetime.strptime(date_entry, '%d/%m/%Y') + date = date_object.strftime('%Y-%m-%d') + statement_list.append([payee, amount, date]) + else: + if not amount: + raise ValidationError(_("Amount is not set")) + elif not payee: + raise ValidationError(_("Payee is not set")) + # Creating record + if statement_list: + for item in statement_list: + statement = self.env['account.bank.statement'].create({ + 'name': item[0], + 'line_ids': [ + (0, 0, { + 'date': item[2], + 'payment_ref': 'qif file', + 'journal_id': self.journal_id.id, + 'amount': item[1], + }), + ], + }) + return { + 'type': 'ir.actions.act_window', + 'name': 'Statements', + 'view_mode': 'list', + 'res_model': 'account.bank.statement', + 'res_id': statement.id, + } + else: + raise ValidationError(_("Choose correct file")) \ No newline at end of file diff --git a/demo_addons_modules/base_accounting_kit/wizard/import_bank_statement_views.xml b/demo_addons_modules/base_accounting_kit/wizard/import_bank_statement_views.xml new file mode 100644 index 000000000..40c33b6ad --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/import_bank_statement_views.xml @@ -0,0 +1,41 @@ + + + + + import.bank.statement.view.form + import.bank.statement + +
+ +

+

+ Upload csv or xlsx or ofx or qif file format +
+

+ + + + + + + +
+
+
+
+
+
+ + + import.bank.statement.view.action + ir.actions.act_window + import.bank.statement + list,form + + new + +
diff --git a/demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report.py b/demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report.py new file mode 100644 index 000000000..a7a5992cb --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models +from odoo.tools.misc import get_lang + + +class AccountTaxReport(models.TransientModel): + _name = 'kit.account.tax.report' + _inherit = "account.report" + _description = 'Tax Report' + + section_main_report_ids = fields.Many2many(string="Section Of", + comodel_name='account.report', + relation="account_tax_report_section_rel", + column1="sub_report_id", + column2="main_report_id") + section_report_ids = fields.Many2many(string="Sections", + comodel_name='account.report', + relation="account_tax_report_section_rel", + column1="main_report_id", + column2="sub_report_id") + company_id = fields.Many2one('res.company', string='Company', required=True, readonly=True, default=lambda self: self.env.company) + name = fields.Char(string="Tax Report", default="Tax Report", + required=True, translate=True) + date_from = fields.Date(string='Start Date') + date_to = fields.Date(string='End Date') + journal_ids = fields.Many2many( + comodel_name='account.journal', + string='Journals', + required=True, + default=lambda self: self.env['account.journal'].search([('company_id', '=', self.company_id.id)]), + domain="[('company_id', '=', company_id)]", + ) + target_move = fields.Selection([('posted', 'All Posted Entries'), + ('all', 'All Entries'), + ], string='Target Moves', required=True, default='posted') + + def _build_contexts(self, data): + result = {} + result['journal_ids'] = 'journal_ids' in data['form'] and data['form']['journal_ids'] or False + result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or '' + result['date_from'] = data['form']['date_from'] or False + result['date_to'] = data['form']['date_to'] or False + result['strict_range'] = True if result['date_from'] else False + result['company_id'] = data['form']['company_id'][0] or False + return result + + def check_report(self): + self.ensure_one() + data = {} + data['ids'] = self.env.context.get('active_ids', []) + data['model'] = self.env.context.get('active_model', 'ir.ui.menu') + data['form'] = self.read(['date_from', 'date_to', 'journal_ids', 'target_move', 'company_id'])[0] + used_context = self._build_contexts(data) + data['form']['used_context'] = dict(used_context, lang=get_lang(self.env).code) + return self.with_context(discard_logo_check=True)._print_report(data) + + def pre_print_report(self, data): + data['form'].update(self.read(['display_account'])[0]) + return data + + def _print_report(self, data): + return self.env.ref( + 'base_accounting_kit.action_report_account_tax').report_action( + self, data=data) diff --git a/demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report_views.xml b/demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report_views.xml new file mode 100644 index 000000000..b81cc06ea --- /dev/null +++ b/demo_addons_modules/base_accounting_kit/wizard/kit_account_tax_report_views.xml @@ -0,0 +1,30 @@ + + + + + kit.account.tax.report.view.form.inherit.base.accounting.kit + kit.account.tax.report + + + + + + + + + Tax Reports + kit.account.tax.report + ir.actions.act_window + form + + {} + new + + + + diff --git a/demo_addons_modules/ica_web_responsive/__init__.py b/demo_addons_modules/ica_web_responsive/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/demo_addons_modules/ica_web_responsive/__manifest__.py b/demo_addons_modules/ica_web_responsive/__manifest__.py new file mode 100644 index 000000000..234385321 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/__manifest__.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'ICA Web Responsive', + 'author':"Agga, IdeaCode Academy", + 'version': '18.0.1.0', + 'depends': ['web', 'base_setup'], + # 'auto_install': ['web'], + 'auto_install': False, + 'data': [ + 'views/webclient_templates.xml', + ], + 'assets': { + 'web._assets_primary_variables': [ + ('after', 'web/static/src/scss/primary_variables.scss', 'ica_web_responsive/static/src/**/*.variables.scss'), + ('before', 'web/static/src/scss/primary_variables.scss', 'ica_web_responsive/static/src/scss/primary_variables.scss'), + ], + 'web._assets_secondary_variables': [ + ('before', 'web/static/src/scss/secondary_variables.scss', 'ica_web_responsive/static/src/scss/secondary_variables.scss'), + ], + 'web._assets_backend_helpers': [ + ('before', 'web/static/src/scss/bootstrap_overridden.scss', 'ica_web_responsive/static/src/scss/bootstrap_overridden.scss'), + ], + 'web.assets_frontend': [ + 'ica_web_responsive/static/src/webclient/home_menu/home_menu_background.scss', # used by login page + 'ica_web_responsive/static/src/webclient/navbar/navbar.scss', + ], + 'web.assets_backend': [ + 'ica_web_responsive/static/src/webclient/**/*.scss', + 'ica_web_responsive/static/src/views/**/*.scss', + + 'ica_web_responsive/static/src/core/**/*', + 'ica_web_responsive/static/src/webclient/**/*.js', + ('after', 'web/static/src/views/list/list_renderer.xml', 'ica_web_responsive/static/src/views/list/list_renderer_desktop.xml'), + 'ica_web_responsive/static/src/webclient/**/*.xml', + 'ica_web_responsive/static/src/views/**/*.js', + 'ica_web_responsive/static/src/views/**/*.xml', + ('remove', 'ica_web_responsive/static/src/views/pivot/**'), + + # Don't include dark mode files in light mode + ('remove', 'ica_web_responsive/static/src/**/*.dark.scss'), + ], + 'web.assets_backend_lazy': [ + 'ica_web_responsive/static/src/views/pivot/**', + ], + 'web.assets_backend_lazy_dark': [ + ('include', 'web.dark_mode_variables'), + # web._assets_backend_helpers + ('before', 'ica_web_responsive/static/src/scss/bootstrap_overridden.scss', 'ica_web_responsive/static/src/scss/bootstrap_overridden.dark.scss'), + ('after', 'web/static/lib/bootstrap/scss/_functions.scss', 'ica_web_responsive/static/src/scss/bs_functions_overridden.dark.scss'), + ], + 'web.assets_web': [ + ('replace', 'web/static/src/main.js', 'ica_web_responsive/static/src/main.js'), + ], + # ========= Dark Mode ========= + "web.dark_mode_variables": [ + # web._assets_primary_variables + ('before', 'ica_web_responsive/static/src/scss/primary_variables.scss', 'ica_web_responsive/static/src/scss/primary_variables.dark.scss'), + ('before', 'ica_web_responsive/static/src/**/*.variables.scss', 'ica_web_responsive/static/src/**/*.variables.dark.scss'), + # web._assets_secondary_variables + ('before', 'ica_web_responsive/static/src/scss/secondary_variables.scss', 'ica_web_responsive/static/src/scss/secondary_variables.dark.scss'), + ], + "web.assets_web_dark": [ + ('include', 'web.dark_mode_variables'), + # web._assets_backend_helpers + ('before', 'ica_web_responsive/static/src/scss/bootstrap_overridden.scss', 'ica_web_responsive/static/src/scss/bootstrap_overridden.dark.scss'), + ('after', 'web/static/lib/bootstrap/scss/_functions.scss', 'ica_web_responsive/static/src/scss/bs_functions_overridden.dark.scss'), + # assets_backend + 'ica_web_responsive/static/src/**/*.dark.scss', + ], + }, + 'license': 'LGPL-3', + + "images":["static/description/img.png"], +} diff --git a/demo_addons_modules/ica_web_responsive/static/description/icon.png b/demo_addons_modules/ica_web_responsive/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..16dd809944c113998efbd5563224efaf7d8e94ce GIT binary patch literal 55818 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⋘30rq#jUD*G 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 z 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 FzW}op(xCtV literal 0 HcmV?d00001 diff --git a/demo_addons_modules/ica_web_responsive/static/description/img.png b/demo_addons_modules/ica_web_responsive/static/description/img.png new file mode 100644 index 0000000000000000000000000000000000000000..18fdf457d737ad4b9f819bfeb41dd65e5a375d1d GIT binary patch literal 428622 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⋙jDD1k(%gs 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�wHXiy%&oH^C(foBefSKPxzUab8HSO`&! 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
  • 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

    }s1=`_rGQ+80=nHwZl1J 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

    Dj##k#t}6iCGT1zt+m8Zu0A7-sP({4tqD6%A4JK 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

    O4%_f|;OGKTtms_jWdxNDJsH%L5L1ig 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 + + + + diff --git a/demo_addons_modules/ica_web_responsive/static/img/background-dark.jpg b/demo_addons_modules/ica_web_responsive/static/img/background-dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce69f953226e9715ab5baf3a46a753bd777f01c8 GIT binary patch literal 8745 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 b<6AdJhd+L#_FQQw_Ti(kH+J literal 0 HcmV?d00001 diff --git a/demo_addons_modules/ica_web_responsive/static/img/background-light.svg b/demo_addons_modules/ica_web_responsive/static/img/background-light.svg new file mode 100644 index 000000000..aa437a117 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/img/background-light.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo_addons_modules/ica_web_responsive/static/src/@types/main.d.ts b/demo_addons_modules/ica_web_responsive/static/src/@types/main.d.ts new file mode 100644 index 000000000..851df0085 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/@types/main.d.ts @@ -0,0 +1,3 @@ +declare module "@odoo/owl" { + export * from "@odoo/owl/dist/types/owl" +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/core/colorlist/colorlist.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/core/colorlist/colorlist.dark.scss new file mode 100644 index 000000000..b68b1de02 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/core/colorlist/colorlist.dark.scss @@ -0,0 +1,8 @@ +// Overrides the existing classes to fit the text-color of +// tag_list.dark.scss +@for $size from 2 through length($o-colors) { + .o_colorlist_item_color_#{$size - 1} { + --background-color: #{adjust-color(nth($o-colors, $size), $lightness: -5%, $saturation: -15%)}; + --color: #{mix(nth($o-colors, $size), $o-view-background-color, 15%)}; + } +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/core/dropdown/dropdown.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/core/dropdown/dropdown.dark.scss new file mode 100644 index 000000000..1fc28544b --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/core/dropdown/dropdown.dark.scss @@ -0,0 +1,8 @@ +// = Dropdowns +// ============================================================================ +// No CSS hacks, variables overrides only + +.o-dropdown { + --border-color: #{$dropdown-border-color}; + --o-input-border-color: #{$dropdown-border-color}; +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/core/notebook/notebook.scss b/demo_addons_modules/ica_web_responsive/static/src/core/notebook/notebook.scss new file mode 100644 index 000000000..8cf0ca977 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/core/notebook/notebook.scss @@ -0,0 +1,12 @@ +// Custom SCSS for enterprise version of notebook tabs + +.o_notebook { + --notebook-link-border-color: #{$border-color}; + --notebook-link-border-color-hover: #{$border-color}; + --notebook-link-border-color-active-accent: #{$o-brand-odoo}; + + .modal & { + --notebook-padding-x: #{$modal-inner-padding}; + --notebook-margin-x: -#{$modal-inner-padding}; + } +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/core/popover/popover.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/core/popover/popover.dark.scss new file mode 100644 index 000000000..ff451eeb9 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/core/popover/popover.dark.scss @@ -0,0 +1,15 @@ +// = Popovers +// ============================================================================ +// No CSS hacks, variables overrides only + +.o_popover { + --border-color: #{$popover-border-color}; + + .table { + --table-bg: #{$popover-bg}; + } + + .o_input { + --o-input-border-color: #{$popover-border-color}; + } +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/core/tags_list/tags_list.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/core/tags_list/tags_list.dark.scss new file mode 100644 index 000000000..c7484ddb2 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/core/tags_list/tags_list.dark.scss @@ -0,0 +1,13 @@ +.o_tag { + @for $size from 1 through length($o-colors) { + &.o_tag_color_#{$size - 1} { + --background-color: #{mix(nth($o-colors, $size), $o-view-background-color, 15%)}; + --color: #{adjust-color(nth($o-colors, $size), $lightness: 5%, $saturation: -15%)}; + + &::after { + --background-color: var(--background-color); + --color: var(--color); + } + } + } +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/main.js b/demo_addons_modules/ica_web_responsive/static/src/main.js new file mode 100644 index 000000000..b4d4340c1 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/main.js @@ -0,0 +1,11 @@ +/** @odoo-module **/ + +import { startWebClient } from "@web/start"; +import { WebClientEnterprise } from "./webclient/webclient"; + +/** + * This file starts the enterprise webclient. In the manifest, it replaces + * the community main.js to load a different webclient class + * (WebClientEnterprise instead of WebClient) + */ +startWebClient(WebClientEnterprise); diff --git a/demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.dark.scss new file mode 100644 index 000000000..bbb2ee320 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.dark.scss @@ -0,0 +1,180 @@ +/// +/// This file is a copy of the bootstrap _variables.scss file where all the +/// left-untouched variables definition have been removed. +/// + + +// == Color system +$danger: $o-danger !default; + +$min-contrast-ratio: 4.5 !default; + +$info-text-emphasis: shift-color($o-info, 90%) !default; +$info-bg-subtle: shift-color($o-info, -65%) !default; +$info-border-subtle: shift-color($o-info, 0%) !default; + +// == Characters which are escaped by the escape-svg function + + +// == Options + + +// == Prefix for :root CSS variables + + +// == Gradient + + +// == Spacing + + +// == Position + + +// == Body + +// == Links + +$link-shade-percentage: 15% !default; +$link-hover-color: shift-color($o-action, 30%) !default; + +// == Paragraphs + + +// == Grid breakpoints + + +// == Grid containers + + +// == Grid columns + + +// == Components +$box-shadow: 0 .5rem 1rem rgba($o-white, .3) !default; +$box-shadow-sm: 0 .125rem .25rem rgba($o-white, .15) !default; +$box-shadow-lg: 0 1rem 3rem rgba($o-white, .3) !default; +$box-shadow-inset: inset 0 1px 2px rgba($o-white, .15) !default; + +$component-active-bg: $o-gray-300 !default; + + +// == Typography +$mark-bg: #ffdebc !default; + +// == Tables +$table-bg: $o-view-background-color !default; +$table-border-color: $o-gray-300 !default; +$table-group-separator-color: $o-gray-300 !default; +$table-bg-scale: -70% !default; +$table-striped-bg-factor: .02 !default; +$table-hover-bg-factor: .1 !default; +$table-active-bg-factor: .1 !default; + +// == Buttons + Forms + + +// == Buttons + + +// == Forms +$input-border-color: $o-gray-300 !default; +$input-placeholder-color: mix($o-gray-500, $o-gray-600) !default; +$input-focus-bg: inherit !default; +$form-range-thumb-active-bg: lighten($o-brand-primary, 10%); +$form-range-track-bg: $o-gray-300 !default; + +$form-switch-color: rgba($o-black, .5) !default; +$form-switch-focus-color: $o-black !default; +$form-switch-checked-color: $o-view-background-color !default; + +// == Form validation + + +// == Z-index master list + + +// == Navs + + +// == Navbar + + +// == Dropdowns +$dropdown-bg: $o-gray-300 !default; +$dropdown-border-color: $o-gray-400 !default; +$dropdown-header-color: $o-gray-700 !default; + + +// == Pagination + + +// == Placeholders + + +// == Cards +$card-cap-bg: $o-view-background-color !default; + +// == Accordion + + +// == Tooltips +$tooltip-color: $o-gray-800 !default; +$tooltip-bg: $o-gray-300 !default; + + +// == Form tooltips must come after regular tooltips + + +// == Popovers +$popover-bg: $o-gray-300 !default; +$popover-border-color: $o-gray-400 !default; + +// == Toasts + + +// == Badges + + +// == Modals + + +// == Alerts +$alert-bg-scale: -65% !default; +$alert-border-scale: 0% !default; +$alert-color-scale: 90% !default; + +// == Progress bars + + +// == List group +$list-group-bg: $o-view-background-color !default; + + +// == Image thumbnails + + +// == Figures + + +// == Breadcrumbs + + +// == Carousel + + +// == Spinners + + +// == Close + + +// == Offcanvas + + +// == Code + +// == Keyboard Input +$kbd-color: $o-gray-200 !default; +$kbd-bg: $o-gray-900 !default; +$kbd-box-shadow: 0px 1px 1px rgba($o-white, 0.2), inset 0px -1px 1px 1px rgba($o-gray-800, 0.8), inset 0px 2px 0px 0px rgba($o-black, 0.8) !default; diff --git a/demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.scss b/demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.scss new file mode 100644 index 000000000..0fd68b229 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/scss/bootstrap_overridden.scss @@ -0,0 +1,136 @@ +/// +/// This file is a copy of the bootstrap _variables.scss file where all the +/// left-untouched variables definition have been removed. +/// + +// +// Color system +// + +$light: $o-white !default; +$dark: $o-gray-900 !default; +$warning: #e99d00 !default; +$danger: #d44c59 !default; + + +// Options + +// Enable predefined decorative box-shadow styles on various components. +// Does not affect box-shadows used for focus states. + +$enable-shadows: true !default; + +// Components +// +// Define common padding and border radius sizes and more. + +$component-active-color: unset !default; +$component-active-bg: mix($o-enterprise-action-color, $o-white, 10%) !default; + +$nav-tabs-border-radius: 0 !default; +$nav-pills-border-radius: 0 !default; +$card-border-radius: 0 !default; +$accordion-border-radius: 0 !default; +$toast-border-radius: 0 !default; +$badge-border-radius: 0 !default; +$progress-border-radius: 0 !default; +$list-group-border-radius: 0 !default; +$thumbnail-border-radius: 0 !default; +$form-check-input-border-radius: 0 !default; + +// Typography +// +// Font, line-height, and color for body text, headings, and more. + +$h1-font-size: $o-font-size-base * 2.4 !default; +$h2-font-size: $o-font-size-base * 1.5 !default; +$h3-font-size: $o-font-size-base * 1.3 !default; +$h4-font-size: $o-font-size-base * 1.2 !default; +$h5-font-size: $o-font-size-base * 1.1 !default; + +// Buttons +// +// For each of Bootstrap's buttons, define text, background, and border color. + +$btn-transition: none !default; + +$btn-box-shadow: 0 !default; +$btn-active-box-shadow: 0 !default; +$btn-focus-box-shadow: 0 !default; + +// Dropdowns +// +// Dropdown menu container and contents. + +$dropdown-box-shadow: 0 .3rem 1rem rgba(#000, .1) !default; + +// Forms +// + +$input-border-color: $o-gray-200 !default; +$input-box-shadow: 0 !default; + +$input-focus-bg: $o-white !default; +$input-focus-box-shadow: 0 !default; +$input-focus-border-color: mix($o-enterprise-action-color, $o-gray-200) !default; + +$form-check-input-checked-color: $o-white !default; +$form-check-input-checked-border-color: $o-enterprise-action-color !default; +$form-check-input-checked-bg-color: $o-enterprise-action-color !default; + +$form-select-focus-box-shadow: 0 !default; + +$form-range-track-box-shadow: 0 !default; + +// Z-index master list +// +// Change the z-index of the modal-backdrop elements to be equal to the +// modal elements' ones. Bootstrap does not support multi-modals, and without +// this rule all the modal-backdrops are below all the opened modals. +// Indeed, bootstrap forces them to a lower z-index as the modal-backdrop +// element (unique in their supported cases) might be put after the modal +// element (if the modal is already in the DOM, hidden, then opened). This +// cannot happen in odoo though as modals are not hidden but removed from +// the DOM and are always put at the end of the body when opened. +// +// TODO the following code was disabled because it is saas-incompatible +// +// $zindex-modal-backdrop: $zindex-modal; + +// Navs +$nav-link-color: $o-main-text-color !default; +$nav-tabs-link-active-color: $o-main-headings-color !default; +$nav-tabs-link-active-bg: transparent !default; + + +// Badges + +$badge-border-radius: $o-border-radius !default; +$badge-font-weight: normal !default; + +// Alerts +// +// Define alert colors, border radius, and padding. + +$alert-border-width: 0 !default; + +// Progress bars + +$progress-box-shadow: 0 !default; + +// List group + +$list-group-active-color: $o-enterprise-action-color !default; +$list-group-active-bg: $component-active-bg !default; +$list-group-active-border-color: $o-enterprise-action-color !default; + + +// Image thumbnails + +$thumbnail-box-shadow: 0 !default; + + +// Breadcrumbs + +$breadcrumb-active-color: $o-main-text-color !default; +$breadcrumb-divider-color: $o-main-color-muted !default; diff --git a/demo_addons_modules/ica_web_responsive/static/src/scss/bs_functions_overridden.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/scss/bs_functions_overridden.dark.scss new file mode 100644 index 000000000..9e27515ea --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/scss/bs_functions_overridden.dark.scss @@ -0,0 +1,14 @@ +/// +/// This file is a copy of the bootstrap _functions.scss file where all the +/// left-untouched function definition have been removed. +/// + +// Tint a color: mix a color with black +@function tint-color($color, $weight) { + @return mix(#000, $color, $weight); +} + +// Shade a color: mix a color with white +@function shade-color($color, $weight) { + @return mix(#FFF, $color, $weight); +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.dark.scss new file mode 100644 index 000000000..eb9fd55ec --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.dark.scss @@ -0,0 +1,193 @@ +/// +/// Odoo Dark-Mode +/// +/// + +// = Colors +// ============================================================================ + +$o-white: #000 !default; +$o-black: #FFF !default; + +$o-gray-100: #1B1D26 !default; +$o-gray-200: #262A36 !default; +$o-gray-300: #3C3E4B !default; +$o-gray-400: #5A5E6B !default; +$o-gray-500: #6B707F !default; +$o-gray-600: #7E8392 !default; +$o-gray-700: #B1B3BC !default; +$o-gray-800: #D1D1D1 !default; +$o-gray-900: #E4E4E4 !default; + +$o-enterprise-color: #6b3e66 !default; +$o-brand-primary: $o-enterprise-color !default; +$o-enterprise-action-color: #02c7b5 !default; + +$o-success: #1dc959 !default; +$o-info: #6AB5FB !default; +$o-warning: #FBB56A !default; +$o-danger: #b83232 !default; +$o-action: $o-enterprise-action-color !default; +$light: $o-gray-300 !default; +$dark: $o-gray-700 !default; + + +// = Text +// ============================================================================ + +$o-main-text-color: $o-gray-800 !default; +$o-main-link-color: $o-action !default; +$o-enterprise-color: $o-brand-odoo !default; +$o-main-favorite-color: #ffd532 !default; +$o-main-code-color: #c58bc8 !default; + +// = Fine-tune contextual text colors. +$o-theme-text-colors: ( + "primary": #b972a6, + "success": #1dc959, + "info": #6AB5FB, + "warning": #FBB56A, + "danger": #ff5757, +) !default; + + +// = Webclient +// ============================================================================ +$o-webclient-color-scheme: dark !default; +$o-webclient-background-color: $o-gray-100 !default; +$o-view-background-color: $o-gray-200 !default; + +// = Inputs +$o-input-border-required: $o-black !default; + +// = Components +// ============================================================================ +$o-component-active-bg: mix($o-action, $o-gray-300, 10%) !default; +$o-form-lightsecondary: $o-gray-300 !default; + +// = List-group +$o-list-group-active-color: $o-gray-900 !default; +$o-list-group-active-bg: rgba(saturate(adjust-hue($o-info, 15), 1.8), .5) !default; + +// = Modal +$modal-backdrop-bg: $o-white !default; + +// = Buttons +$o-btns-bs-override: () !default; +$o-btns-bs-override: map-merge(( + "primary": ( + background: $o-brand-primary, + border: $o-brand-primary, + color: $o-black, + + hover-background: lighten($o-brand-primary, 5%), + hover-border: lighten($o-brand-primary, 5%), + hover-color: $o-black, + + active-background: lighten($o-brand-primary, 10%), + active-border: lighten($o-brand-primary, 10%), + active-color: $o-black, + ), + + "secondary": ( + background: $o-gray-300, + border: $o-gray-300, + color: $o-gray-900, + + hover-background: $o-gray-400, + hover-border: $o-gray-400, + hover-color: $o-gray-900, + + active-background: mix($o-action, $o-gray-100, 15%), + active-border: lighten($o-action, 10%), + active-color: $o-black, + ), + + "light": ( + background: $o-gray-200, + border: $o-gray-200, + color: $o-gray-800, + + hover-background: $o-gray-300, + hover-border: $o-gray-300, + hover-color: $o-gray-900, + + active-background: mix($o-action, $o-gray-100, 15%), + active-border: darken($o-action, 10%), + active-color: $o-black, + ), + + "danger": ( + background: $o-danger, + border: $o-danger, + color: $o-black, + + hover-background: lighten($o-danger, 5%), + hover-border: lighten($o-danger, 5%), + hover-color: $o-black, + + active-background: lighten($o-danger, 10%), + active-border: lighten($o-danger, 10%), + active-color: $o-black, + ), +), $o-btns-bs-override); + + +$o-btns-bs-outline-override: () !default; +$o-btns-bs-outline-override: map-merge(( + + "primary": ( + background: transparent, + border: map-get($o-theme-text-colors, 'primary'), + color: map-get($o-theme-text-colors, 'primary'), + + hover-background: lighten($o-brand-primary, 5%), + hover-border: lighten($o-brand-primary, 5%), + hover-color: $o-black, + + active-background: lighten($o-brand-primary, 10%), + active-border: lighten($o-brand-primary, 10%), + active-color: $o-black, + ), + "secondary": ( + background: transparent, + border: $o-gray-300, + color: $o-gray-700, + + hover-background: $o-gray-300, + hover-border: $o-gray-300, + hover-color: $o-black, + + active-background: mix($o-action, $o-gray-100, 15%), + active-border: lighten($o-action, 10%), + active-color: $o-black, + ), + + "light": ( + background: transparent, + border: $o-gray-300, + color: $o-black, + + hover-background: $o-gray-300, + hover-border: $o-gray-300, + hover-color: $o-gray-900, + + active-background: mix($o-action, $o-gray-100, 15%), + active-border: lighten($o-action, 10%), + active-color: $o-black, + ), + + "danger": ( + background: transparent, + border: $o-danger, + color: $o-danger, + + hover-background: lighten($o-danger, 5%), + hover-border: lighten($o-danger, 5%), + hover-color: $o-black, + + active-background: lighten($o-danger, 10%), + active-border: lighten($o-danger, 10%), + active-color: $o-black, + ), +), $o-btns-bs-outline-override); diff --git a/demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.scss b/demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.scss new file mode 100644 index 000000000..5e95dbf23 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/scss/primary_variables.scss @@ -0,0 +1,107 @@ +/// +/// This file regroups the variables that style odoo components. +/// They are available in every asset bundle. +/// + +// Colors +$o-white: #FFF !default; +$o-black: #000 !default; + +$o-gray-100: #F9FAFB !default; +$o-gray-200: #e7e9ed !default; +$o-gray-300: #d8dadd !default; +$o-gray-400: #9a9ca5 !default; +$o-gray-500: #7c7f89 !default; +$o-gray-600: #5f636f !default; +$o-gray-700: #374151 !default; +$o-gray-800: #1F2937 !default; +$o-gray-900: #111827 !default; + +$o-enterprise-color: #714B67 !default; +$o-enterprise-action-color: #017e84 !default; + +$o-opacity-disabled: .5 !default; +$o-opacity-muted: .76 !default; + +$o-brand-odoo: $o-enterprise-color !default; +$o-brand-primary: $o-brand-odoo !default; +$o-brand-secondary: #8f8f8f !default; +$o-brand-lightsecondary: $o-gray-100 !default; + +$o-action: $o-enterprise-action-color !default; +$o-main-text-color: $o-gray-700 !default; +$o-main-link-color: $o-enterprise-action-color !default; +$o-main-color-muted: rgba($o-main-text-color, $o-opacity-muted) !default; + +// Components +$o-component-active-color: $o-gray-900 !default; +$o-component-active-bg: mix($o-action, $o-white, 10%) !default; +$o-component-active-border: $o-action !default; + +$o-list-group-header-color: $o-gray-900 !default; +$o-list-footer-color: $o-gray-900 !default; +$o-list-footer-bg-color: transparent !default; +$o-list-footer-font-weight: 500 !default; + +$o-form-lightsecondary: $o-gray-200 !default; + +// o-inputs +$o-input-padding-y: 1px !default; +$o-input-padding-x: 0 !default; + +$o-input-border-required: $o-gray-900 !default; + +// Badges +$o-badge-min-width: 2.7ch !default !default; + +// Buttons +// Map of customized values for each button. If a button's design is defined +// here, the relative values will take priority over default BS ones. +// Notice: each map's entry is passed directly to the Bootstrap mixin, meaning +// that all states must be defined, there can't be omissions. +$o-btns-bs-override: () !default; +$o-btns-bs-override: map-merge(( + "primary": ( + background: $o-brand-primary, + border: $o-brand-primary, + color: $o-white, + + hover-background: darken($o-brand-primary, 10%), + hover-border: darken($o-brand-primary, 10%), + hover-color: $o-white, + + active-background: mix($o-brand-primary, $o-white, 10%), + active-border: $o-brand-primary, + active-color:$o-brand-primary, + ), + "secondary": ( + background: $o-gray-200, + border: $o-gray-200, + color: $o-gray-700, + + hover-background: $o-gray-300, + hover-border: $o-gray-300, + hover-color: $o-gray-800, + + active-background: $o-component-active-bg, + active-border: $o-component-active-border, + active-color: $o-component-active-color, + ), +), $o-btns-bs-override); + +$o-btns-bs-outline-override: () !default; +$o-btns-bs-outline-override: map-merge(( + "secondary": ( + background: transparent, + border: $o-gray-300, + color: $o-gray-700, + + hover-background: $o-gray-200, + hover-border: $o-gray-300, + hover-color: $o-gray-800, + + active-background: mix($o-enterprise-action-color, $o-white, 10%), + active-border: $o-enterprise-action-color, + active-color: $o-gray-900, + ), +), $o-btns-bs-outline-override); diff --git a/demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.dark.scss new file mode 100644 index 000000000..3db856613 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.dark.scss @@ -0,0 +1,19 @@ +$o-colors-original: lighten(#000, 46.7%), #f07b50, #f4b660, #F7CD1F, #6cedeb, #8d5482, + #e74e4e, #2C8397, #475577, #dc0457, #30C381, #9365B8 !default; + +$o-colors-secondary-original: #aa4b6b, #30C381, #97743a, #F7CD1F, #4285F4, #8E24AA, + #D6145F, #173e43, #348F50, #AA3A38, #795548, #5e0231, + #6be585, #999966, #e9d362, #b56969, #bdc3c7, #649173 !default; + +$o-colors: ()!default; +$o-colors-secondary: ()!default; + +@each $-color in $o-colors-original { + $-adjusted: saturate(mix($-color, $o-black, 50%), 60%); + $o-colors: append($o-colors, $-adjusted); +} + +@each $-color in $o-colors-secondary-original { + $-adjusted: saturate(mix($-color, $o-black, 50%), 80%); + $o-colors-secondary: append($o-colors-secondary, $-adjusted); +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.scss b/demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.scss new file mode 100644 index 000000000..9dba4643e --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/scss/secondary_variables.scss @@ -0,0 +1,4 @@ +// Needed for having no spacing between sheet and mail body in mass_mailing: +// Different required cancel paddings between web and ica_web_responsive +$o-sheet-cancel-tpadding: $o-horizontal-padding !default; +$o-sheet-cancel-bpadding: $o-horizontal-padding + $o-sheet-vpadding !default; diff --git a/demo_addons_modules/ica_web_responsive/static/src/search/search_bar/search_bar.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/search/search_bar/search_bar.dark.scss new file mode 100644 index 000000000..e5e3bbdb8 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/search/search_bar/search_bar.dark.scss @@ -0,0 +1,7 @@ +// = Search Bar +// ============================================================================ +// No CSS hacks, variables overrides only + +.o_searchview_facet { + --SearchBar-facet-background: #{$o-black}; +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/search/search_panel/search_view.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/search/search_panel/search_view.dark.scss new file mode 100644 index 000000000..ab7f4b56f --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/search/search_panel/search_view.dark.scss @@ -0,0 +1,12 @@ +// = Mobile Search +// ============================================================================ +// No CSS hacks, variables overrides only + +.o_mobile_search { + --mobileSearch-bg: #{$o-gray-200}; + --mobileSearch__header-bg: #{$o-gray-100}; +} + +.o_searchview { + --SearchBar-background-color: #{$o-gray-100}; +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/dashboard/dashboard_controller.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/views/dashboard/dashboard_controller.dark.scss new file mode 100644 index 000000000..5d13f1c5f --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/dashboard/dashboard_controller.dark.scss @@ -0,0 +1,10 @@ +// = Dashboard View +// ============================================================================ +// No CSS hacks, variables overrides only + +.o_dashboard_view { + --DashboardView-background-color: #{$o-gray-100}; + --DashboardView__controlPanel-background-color: transparent; + --DashboardView__pieChart-background-color: transparent; +} + diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/fields/image/image_field.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/views/fields/image/image_field.dark.scss new file mode 100644 index 000000000..3b5078522 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/fields/image/image_field.dark.scss @@ -0,0 +1,7 @@ +// = Image Field +// ============================================================================ +// No CSS hacks, variables overrides only + +.o_field_image { + --ImageField-background-color: #{$o-gray-900}; +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/fields/properties/properties_field.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/views/fields/properties/properties_field.dark.scss new file mode 100644 index 000000000..e45f6a1c2 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/fields/properties/properties_field.dark.scss @@ -0,0 +1,19 @@ +.o_field_property_definition_type, .o_field_property_definition_type_menu { + .o_field_property_dropdown > img { + -webkit-filter: invert(100%); + filter: invert(100%); + } +} +.o_property_field_value { + select { + option { + background-color: $border-color; + } + } +} +.o_field_property_definition_type_popover.popover { + .dropdown-item img { + -webkit-filter: invert(100%); + filter: invert(100%); + } +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/form/button_box/button_box.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/views/form/button_box/button_box.dark.scss new file mode 100644 index 000000000..f95694fa4 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/form/button_box/button_box.dark.scss @@ -0,0 +1,4 @@ +.o-form-buttonbox { + --o-stat-button-color: currentColor; + --o-stat-text-color: #{o-text-color('primary')}; +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/gantt/web_gantt.variables.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/views/gantt/web_gantt.variables.dark.scss new file mode 100644 index 000000000..fc39ad93c --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/gantt/web_gantt.variables.dark.scss @@ -0,0 +1,9 @@ +// = Gantt View Variables +// ============================================================================ +// No CSS hacks, variables overrides only + +$gantt-highlight-today-border: rgba($o-warning, 0.5) !default; +$gantt-highlight-today-bg: rgba($o-warning, 0.15)!default; +$gantt-highlight-hover-row: rgba($o-brand-primary, .1) !default; +$gantt-row-open-bg: $o-gray-100 !default; +$gantt-unavailability-bg: $o-gray-200 !default; diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_controller.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_controller.dark.scss new file mode 100644 index 000000000..5d953cbc6 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_controller.dark.scss @@ -0,0 +1,11 @@ +// = Kanban Rendered +// ============================================================================ +// No CSS hacks, variables overrides only + +.o_kanban_renderer { + --KanbanGroup-grouped-bg: #{$o-view-background-color}; + --KanbanRecord__image-bg-color: #{$o-gray-900}; + --KanbanColumn__highlight-background: #{mix($o-action, $o-gray-100, 15%)}; + --KanbanColumn__highlight-border: #{$o-component-active-border}; + --Kanban-background: #{$gray-100}; +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_header_patch.js b/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_header_patch.js new file mode 100644 index 000000000..01ec724d1 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_header_patch.js @@ -0,0 +1,44 @@ +/* @odoo-module */ + +import { registry } from "@web/core/registry"; +import { patch } from "@web/core/utils/patch"; +import { KanbanHeader } from "@web/views/kanban/kanban_header"; +import { PromoteStudioAutomationDialog } from "@ica_web_responsive/webclient/promote_studio_dialog/promote_studio_dialog"; +import { _t } from "@web/core/l10n/translation"; +import { user } from "@web/core/user"; + +patch(KanbanHeader.prototype, { + /** + * @override + */ + get permissions() { + const permissions = super.permissions; + Object.defineProperty(permissions, "canEditAutomations", { + get: () => user.isAdmin, + configurable: true, + }); + return permissions; + }, + + async openAutomations() { + if (typeof this._openAutomations === "function") { + // this is the case if base_automation is installed + return this._openAutomations(); + } else { + this.env.services.dialog.add(PromoteStudioAutomationDialog, { + title: _t("Odoo Studio - Customize workflows in minutes"), + }); + } + }, +}); + +registry.category("kanban_header_config_items").add( + "open_automations", + { + label: _t("Automations"), + method: "openAutomations", + isVisible: ({ permissions }) => permissions.canEditAutomations, + class: "o_column_automations", + }, + { sequence: 25, force: true } +); diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_view.scss b/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_view.scss new file mode 100644 index 000000000..5ea95e165 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/kanban/kanban_view.scss @@ -0,0 +1,14 @@ +.o_kanban_view { + + .o_column_quick_create .o_kanban_quick_create { + input { + &, &:focus, &:hover { + background: transparent; + border-bottom: 1px solid map-get($grays, '600'); + } + } + .input-group-append, .input-group-prepend { + border-left: 10px solid map-get($grays, '200'); + } + } +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.dark.scss b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.dark.scss new file mode 100644 index 000000000..219e84e50 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.dark.scss @@ -0,0 +1,4 @@ +// = ListRenderer +// ============================================================================ +// No CSS hacks, variables overrides only + diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.scss b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.scss new file mode 100644 index 000000000..8eb931c41 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_controller.scss @@ -0,0 +1,3 @@ +.o_list_renderer { + --ListRenderer-thead-border-end-color: transparent; +} diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.js b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.js new file mode 100644 index 000000000..589f63b91 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.js @@ -0,0 +1,100 @@ +/** @odoo-module */ + +import { isMobileOS } from "@web/core/browser/feature_detection"; +import { user } from "@web/core/user"; +import { useService } from "@web/core/utils/hooks"; +import { patch } from "@web/core/utils/patch"; +import { ListRenderer } from "@web/views/list/list_renderer"; +import { PromoteStudioDialog } from "@ica_web_responsive/webclient/promote_studio_dialog/promote_studio_dialog"; +import { _t } from "@web/core/l10n/translation"; +import { onWillDestroy, useState } from "@odoo/owl"; + +export const patchListRendererDesktop = () => ({ + setup() { + super.setup(...arguments); + this.actionService = useService("action"); + const list = this.props.list; + + const { actionId, actionType } = this.env.config || {}; + + // Start by determining if the current ListRenderer is in a context that would + // allow the edition of the arch by studio. + // It needs to be a full list view, in an action + // (not a X2Many list, and not an "embedded" list in another component) + // Also, there is not enough information when an action is in target new, + // and this use case is fairly outside of the feature's scope + const isPotentiallyEditable = + !isMobileOS() && + !this.env.inDialog && + user.isSystem && + list === list.model.root && + actionId && + actionType === "ir.actions.act_window"; + this.studioEditable = useState({ value: isPotentiallyEditable }); + + if (isPotentiallyEditable) { + const computeStudioEditable = (action) => { + // Finalize the computation when the actionService is ready. + // The following code is copied from studioService. + if (!action.xml_id) { + return false; + } + if ( + action.res_model.indexOf("settings") > -1 && + action.res_model.indexOf("x_") !== 0 + ) { + return false; // settings views aren't editable; but x_settings is + } + if (action.res_model === "board.board") { + return false; // dashboard isn't editable + } + if (action.view_mode === "qweb") { + // Apparently there is a QWebView that allows to + // implement ActWindow actions that are completely custom + // but not editable by studio + return false; + } + if (action.res_model === "knowledge.article") { + // The knowledge form view is very specific and custom, it doesn't make sense + // to edit it. Editing the list and kanban is more debatable, but for simplicity's sake + // we set them to not editable too. + return false; + } + return Boolean(action.res_model); + }; + const onUiUpdated = () => { + const action = this.actionService.currentController.action; + if (action.id === actionId) { + this.studioEditable.value = computeStudioEditable(action); + } + stopListening(); + }; + const stopListening = () => + this.env.bus.removeEventListener("ACTION_MANAGER:UI-UPDATED", onUiUpdated); + this.env.bus.addEventListener("ACTION_MANAGER:UI-UPDATED", onUiUpdated); + + onWillDestroy(stopListening); + } + }, + + isStudioEditable() { + return this.studioEditable.value; + }, + + get displayOptionalFields() { + return this.isStudioEditable() || super.displayOptionalFields; + }, + + /** + * This function opens promote studio dialog + * + * @private + */ + onSelectedAddCustomField() { + this.env.services.dialog.add(PromoteStudioDialog, { + title: _t("Odoo Studio - Add new fields to any view"), + }); + }, +}); + +export const unpatchListRendererDesktop = patch(ListRenderer.prototype, patchListRendererDesktop()); diff --git a/demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.xml b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.xml new file mode 100644 index 000000000..dbab49517 --- /dev/null +++ b/demo_addons_modules/ica_web_responsive/static/src/views/list/list_renderer_desktop.xml @@ -0,0 +1,16 @@ + + + + + + +