ods-component-lib 1.21.2 → 1.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +382 -19
- package/dist/_virtual/es.array.index-of.js +3 -0
- package/dist/_virtual/es.array.index-of.js.map +1 -0
- package/dist/_virtual/es.array.index-of2.js +5 -0
- package/dist/_virtual/es.array.index-of2.js.map +1 -0
- package/dist/_virtual/es.array.iterator.js +3 -0
- package/dist/_virtual/es.array.iterator.js.map +1 -0
- package/dist/_virtual/es.array.reduce.js +3 -0
- package/dist/_virtual/es.array.reduce.js.map +1 -0
- package/dist/_virtual/es.array.reduce2.js +5 -0
- package/dist/_virtual/es.array.reduce2.js.map +1 -0
- package/dist/_virtual/es.array.reverse.js +3 -0
- package/dist/_virtual/es.array.reverse.js.map +1 -0
- package/dist/_virtual/es.array.reverse2.js +5 -0
- package/dist/_virtual/es.array.reverse2.js.map +1 -0
- package/dist/_virtual/es.promise.all.js +5 -0
- package/dist/_virtual/es.promise.all.js.map +1 -0
- package/dist/_virtual/es.promise.catch.js +5 -0
- package/dist/_virtual/es.promise.catch.js.map +1 -0
- package/dist/_virtual/es.promise.constructor.js +5 -0
- package/dist/_virtual/es.promise.constructor.js.map +1 -0
- package/dist/_virtual/es.promise.js +3 -0
- package/dist/_virtual/es.promise.js.map +1 -0
- package/dist/_virtual/es.promise.race.js +5 -0
- package/dist/_virtual/es.promise.race.js.map +1 -0
- package/dist/_virtual/es.promise.reject.js +5 -0
- package/dist/_virtual/es.promise.reject.js.map +1 -0
- package/dist/_virtual/es.promise.resolve.js +5 -0
- package/dist/_virtual/es.promise.resolve.js.map +1 -0
- package/dist/_virtual/es.promise2.js +5 -0
- package/dist/_virtual/es.promise2.js.map +1 -0
- package/dist/_virtual/es.regexp.exec.js +5 -0
- package/dist/_virtual/es.regexp.exec.js.map +1 -0
- package/dist/_virtual/es.regexp.to-string.js +3 -0
- package/dist/_virtual/es.regexp.to-string.js.map +1 -0
- package/dist/_virtual/es.regexp.to-string2.js +5 -0
- package/dist/_virtual/es.regexp.to-string2.js.map +1 -0
- package/dist/_virtual/es.string.ends-with.js +3 -0
- package/dist/_virtual/es.string.ends-with.js.map +1 -0
- package/dist/_virtual/es.string.ends-with2.js +5 -0
- package/dist/_virtual/es.string.ends-with2.js.map +1 -0
- package/dist/_virtual/es.string.includes.js +3 -0
- package/dist/_virtual/es.string.includes.js.map +1 -0
- package/dist/_virtual/es.string.includes2.js +5 -0
- package/dist/_virtual/es.string.includes2.js.map +1 -0
- package/dist/_virtual/es.string.match.js +3 -0
- package/dist/_virtual/es.string.match.js.map +1 -0
- package/dist/_virtual/es.string.match2.js +5 -0
- package/dist/_virtual/es.string.match2.js.map +1 -0
- package/dist/_virtual/es.string.replace.js +3 -0
- package/dist/_virtual/es.string.replace.js.map +1 -0
- package/dist/_virtual/es.string.replace2.js +5 -0
- package/dist/_virtual/es.string.replace2.js.map +1 -0
- package/dist/_virtual/es.string.split.js +3 -0
- package/dist/_virtual/es.string.split.js.map +1 -0
- package/dist/_virtual/es.string.split2.js +5 -0
- package/dist/_virtual/es.string.split2.js.map +1 -0
- package/dist/_virtual/es.string.starts-with.js +3 -0
- package/dist/_virtual/es.string.starts-with.js.map +1 -0
- package/dist/_virtual/es.string.starts-with2.js +5 -0
- package/dist/_virtual/es.string.starts-with2.js.map +1 -0
- package/dist/_virtual/es.string.trim.js +3 -0
- package/dist/_virtual/es.string.trim.js.map +1 -0
- package/dist/_virtual/es.string.trim2.js +5 -0
- package/dist/_virtual/es.string.trim2.js.map +1 -0
- package/dist/_virtual/index.js +3 -5
- package/dist/_virtual/index.js.map +1 -1
- package/dist/_virtual/index2.js +2 -3
- package/dist/_virtual/index2.js.map +1 -1
- package/dist/_virtual/index3.js +5 -2
- package/dist/_virtual/index3.js.map +1 -1
- package/dist/_virtual/index4.js +5 -3
- package/dist/_virtual/index4.js.map +1 -1
- package/dist/_virtual/index5.js +3 -2
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +2 -5
- package/dist/_virtual/index6.js.map +1 -1
- package/dist/_virtual/index7.js +2 -5
- package/dist/_virtual/index7.js.map +1 -1
- package/dist/_virtual/index8.js +5 -2
- package/dist/_virtual/index8.js.map +1 -1
- package/dist/_virtual/{index14.js → make-built-in.js} +1 -1
- package/dist/_virtual/make-built-in.js.map +1 -0
- package/dist/_virtual/new-promise-capability.js +5 -0
- package/dist/_virtual/new-promise-capability.js.map +1 -0
- package/dist/_virtual/object-define-properties.js +5 -0
- package/dist/_virtual/object-define-properties.js.map +1 -0
- package/dist/_virtual/object-define-property.js +5 -0
- package/dist/_virtual/object-define-property.js.map +1 -0
- package/dist/_virtual/object-get-own-property-descriptor.js +5 -0
- package/dist/_virtual/object-get-own-property-descriptor.js.map +1 -0
- package/dist/_virtual/object-get-own-property-names.js +5 -0
- package/dist/_virtual/object-get-own-property-names.js.map +1 -0
- package/dist/_virtual/object-get-own-property-symbols.js +5 -0
- package/dist/_virtual/object-get-own-property-symbols.js.map +1 -0
- package/dist/_virtual/object-property-is-enumerable.js +5 -0
- package/dist/_virtual/object-property-is-enumerable.js.map +1 -0
- package/dist/_virtual/{index12.js → shared-store.js} +1 -1
- package/dist/_virtual/shared-store.js.map +1 -0
- package/dist/_virtual/web.dom-collections.iterator.js +3 -0
- package/dist/_virtual/web.dom-collections.iterator.js.map +1 -0
- package/dist/_virtual/web.dom-collections.iterator2.js +5 -0
- package/dist/_virtual/web.dom-collections.iterator2.js.map +1 -0
- package/dist/components/antd/alert/OdsAlert.js +5 -8
- package/dist/components/antd/alert/OdsAlert.js.map +1 -1
- package/dist/components/antd/autocomplete/OdsAutoComplete.js +5 -8
- package/dist/components/antd/autocomplete/OdsAutoComplete.js.map +1 -1
- package/dist/components/antd/badge/OdsBadge.js +2 -5
- package/dist/components/antd/badge/OdsBadge.js.map +1 -1
- package/dist/components/antd/badge/OdsBadgeRibbon.js +4 -7
- package/dist/components/antd/badge/OdsBadgeRibbon.js.map +1 -1
- package/dist/components/antd/button/OdsButton.js +5 -8
- package/dist/components/antd/button/OdsButton.js.map +1 -1
- package/dist/components/antd/button/OdsDataGrdiRowButton.js +25 -26
- package/dist/components/antd/button/OdsDataGrdiRowButton.js.map +1 -1
- package/dist/components/antd/calendar/OdsCalendar.js +5 -8
- package/dist/components/antd/calendar/OdsCalendar.js.map +1 -1
- package/dist/components/antd/card/OdsCard.js +5 -13
- package/dist/components/antd/card/OdsCard.js.map +1 -1
- package/dist/components/antd/change/OdsChange.js +136 -85
- package/dist/components/antd/change/OdsChange.js.map +1 -1
- package/dist/components/antd/change/OdsChange.module.scss.js +12 -0
- package/dist/components/antd/change/OdsChange.module.scss.js.map +1 -0
- package/dist/components/antd/checkbox/OdsCheckbox.js +5 -8
- package/dist/components/antd/checkbox/OdsCheckbox.js.map +1 -1
- package/dist/components/antd/checkbox/OdsCheckboxGroup.js +5 -8
- package/dist/components/antd/checkbox/OdsCheckboxGroup.js.map +1 -1
- package/dist/components/antd/collapse/OdsCollapse.js +2 -4
- package/dist/components/antd/collapse/OdsCollapse.js.map +1 -1
- package/dist/components/antd/currencyInput/CurrencySelect.js +14 -9
- package/dist/components/antd/currencyInput/CurrencySelect.js.map +1 -1
- package/dist/components/antd/currencyInput/OdsCurrencyInput.js +53 -57
- package/dist/components/antd/currencyInput/OdsCurrencyInput.js.map +1 -1
- package/dist/components/antd/datePicker/OdsDatePicker.js +5 -10
- package/dist/components/antd/datePicker/OdsDatePicker.js.map +1 -1
- package/dist/components/antd/datePicker/OdsDateRangePicker.js +5 -14
- package/dist/components/antd/datePicker/OdsDateRangePicker.js.map +1 -1
- package/dist/components/antd/divider/OdsDivider.js +5 -6
- package/dist/components/antd/divider/OdsDivider.js.map +1 -1
- package/dist/components/antd/dropdown/OdsDropdown.js +3 -12
- package/dist/components/antd/dropdown/OdsDropdown.js.map +1 -1
- package/dist/components/antd/image/OdsImage.js.map +1 -1
- package/dist/components/antd/input/OdsInput.js +5 -8
- package/dist/components/antd/input/OdsInput.js.map +1 -1
- package/dist/components/antd/input/OdsPassword.js +13 -10
- package/dist/components/antd/input/OdsPassword.js.map +1 -1
- package/dist/components/antd/input/OdsPhoneInput.js +12 -17
- package/dist/components/antd/input/OdsPhoneInput.js.map +1 -1
- package/dist/components/antd/input/OdsSearch.js +3 -6
- package/dist/components/antd/input/OdsSearch.js.map +1 -1
- package/dist/components/antd/input/OdsTextArea.js +5 -8
- package/dist/components/antd/input/OdsTextArea.js.map +1 -1
- package/dist/components/antd/inputNumber/OdsInputNumber.js +5 -8
- package/dist/components/antd/inputNumber/OdsInputNumber.js.map +1 -1
- package/dist/components/antd/list/OdsList.js +5 -22
- package/dist/components/antd/list/OdsList.js.map +1 -1
- package/dist/components/antd/modal/OdsModal.js +4 -5
- package/dist/components/antd/modal/OdsModal.js.map +1 -1
- package/dist/components/antd/notification/OdsNotification.js +6 -8
- package/dist/components/antd/notification/OdsNotification.js.map +1 -1
- package/dist/components/antd/progress/OdsProgress.js +5 -8
- package/dist/components/antd/progress/OdsProgress.js.map +1 -1
- package/dist/components/antd/radio/OdsRadio.js +4 -9
- package/dist/components/antd/radio/OdsRadio.js.map +1 -1
- package/dist/components/antd/radio/OdsRadioGroup.js +5 -6
- package/dist/components/antd/radio/OdsRadioGroup.js.map +1 -1
- package/dist/components/antd/rate/OdsRate.js +5 -8
- package/dist/components/antd/rate/OdsRate.js.map +1 -1
- package/dist/components/antd/select/OdsSelect.js +4 -7
- package/dist/components/antd/select/OdsSelect.js.map +1 -1
- package/dist/components/antd/spin/OdsSpin.js +5 -7
- package/dist/components/antd/spin/OdsSpin.js.map +1 -1
- package/dist/components/antd/switch/OdsSwitch.js +4 -7
- package/dist/components/antd/switch/OdsSwitch.js.map +1 -1
- package/dist/components/antd/tab/OdsTab.js +5 -8
- package/dist/components/antd/tab/OdsTab.js.map +1 -1
- package/dist/components/antd/table/OdsTable.js +9 -0
- package/dist/components/antd/table/OdsTable.js.map +1 -0
- package/dist/components/antd/tag/OdsTag.js +5 -8
- package/dist/components/antd/tag/OdsTag.js.map +1 -1
- package/dist/components/antd/timeline/OdsTimeline.js +5 -12
- package/dist/components/antd/timeline/OdsTimeline.js.map +1 -1
- package/dist/components/antd/timepicker/OdsRangeTimepicker.js +6 -7
- package/dist/components/antd/timepicker/OdsRangeTimepicker.js.map +1 -1
- package/dist/components/antd/timepicker/OdsTimepicker.js +6 -9
- package/dist/components/antd/timepicker/OdsTimepicker.js.map +1 -1
- package/dist/components/antd/treeSelect/OdsTreeSelect.js +5 -29
- package/dist/components/antd/treeSelect/OdsTreeSelect.js.map +1 -1
- package/dist/components/antd/typography/OdsLink.js +5 -3
- package/dist/components/antd/typography/OdsLink.js.map +1 -1
- package/dist/components/antd/typography/OdsParagraph.js +5 -3
- package/dist/components/antd/typography/OdsParagraph.js.map +1 -1
- package/dist/components/antd/typography/OdsText.js +5 -8
- package/dist/components/antd/typography/OdsText.js.map +1 -1
- package/dist/components/antd/typography/OdsTitle.js +5 -8
- package/dist/components/antd/typography/OdsTitle.js.map +1 -1
- package/dist/components/devextreme/DataGrid/OdsDataGrid/index.js +44 -35
- package/dist/components/devextreme/DataGrid/OdsDataGrid/index.js.map +1 -1
- package/dist/components/devextreme/DataGrid/OdsDataGridV2/index.js +21 -0
- package/dist/components/devextreme/DataGrid/OdsDataGridV2/index.js.map +1 -0
- package/dist/components/devextreme/DataGrid/hooks/useBodyClasses.js +27 -18
- package/dist/components/devextreme/DataGrid/hooks/useBodyClasses.js.map +1 -1
- package/dist/components/devextreme/DxDataGrid.module.scss.js +8 -0
- package/dist/components/devextreme/DxDataGrid.module.scss.js.map +1 -0
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.Constants.js +0 -1
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.Constants.js.map +1 -1
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.js +55 -64
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.js.map +1 -1
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.module.scss.js +10 -0
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.module.scss.js.map +1 -0
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.Constants.js +0 -1
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.Constants.js.map +1 -1
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.js +40 -41
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.js.map +1 -1
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.module.scss.js +10 -0
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.module.scss.js.map +1 -0
- package/dist/components/devextreme/OdsDataGrid.Legacy.js +30 -30
- package/dist/components/devextreme/OdsDataGrid.Legacy.js.map +1 -1
- package/dist/components/devextreme/OdsDisplayGrid.js +36 -36
- package/dist/components/devextreme/OdsDisplayGrid.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/OdsInlineEditDataGrid.js +2 -2
- package/dist/components/devextreme/OdsInlineEditDataGrid/OdsInlineEditDataGrid.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/handlers/OnActionCellRenderHandler.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/handlers/OnContentReadyHandler.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/handlers/OnEditorPreparedHandler.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/handlers/OnOptionChangedHandler.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/handlers/OnSummaryHandler.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/partials/PageTitleAndToolbarPartial.js +22 -25
- package/dist/components/devextreme/OdsInlineEditDataGrid/partials/PageTitleAndToolbarPartial.js.map +1 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/styles.module.scss.js +16 -0
- package/dist/components/devextreme/OdsInlineEditDataGrid/styles.module.scss.js.map +1 -0
- package/dist/components/devextreme/OdsMasterDetailDataGrid/OdsMasterDetailDataGrid.js.map +1 -1
- package/dist/components/devextreme/OdsMasterDetailDataGrid/handlers/OnActionCellRenderHandler.js.map +1 -1
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.Constants.js.map +1 -1
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.Helper.js.map +1 -1
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.js +83 -84
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.js.map +1 -1
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.module.scss.js +12 -0
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.module.scss.js.map +1 -0
- package/dist/components/devextreme/OdsRemoteDataGrid.js +19 -19
- package/dist/components/devextreme/OdsRemoteDataGrid.js.map +1 -1
- package/dist/components/devextreme/OdsServerSideDatagrid/OdsServerSideDatagrid.js +2 -2
- package/dist/components/devextreme/OdsServerSideDatagrid/OdsServerSideDatagrid.js.map +1 -1
- package/dist/components/devextreme/OdsServerSideDatagrid/OdsServerSideDatagrid.module.scss.js +10 -0
- package/dist/components/devextreme/OdsServerSideDatagrid/OdsServerSideDatagrid.module.scss.js.map +1 -0
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.Functions.js +62 -63
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.Functions.js.map +1 -1
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.Types.js.map +1 -1
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.js +29 -29
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.js.map +1 -1
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.module.scss.js +26 -0
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.module.scss.js.map +1 -0
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTableColumnChooser.js +3 -3
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTableColumnChooser.js.map +1 -1
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTableTaskTemplate.js +13 -11
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTableTaskTemplate.js.map +1 -1
- package/dist/components/devextreme/OdsTransfer.js +130 -93
- package/dist/components/devextreme/OdsTransfer.js.map +1 -1
- package/dist/components/devextreme/OdsTransferV2.js +41 -41
- package/dist/components/devextreme/OdsTransferV2.js.map +1 -1
- package/dist/components/devextreme/Transfer.module.scss.js +8 -0
- package/dist/components/devextreme/Transfer.module.scss.js.map +1 -0
- package/dist/components/devextreme/datagridUtils/DynamicIcon.js +1 -1
- package/dist/components/filter/OdsFilter.js +57 -59
- package/dist/components/filter/OdsFilter.js.map +1 -1
- package/dist/components/filter/OdsFilterPlus.js +111 -116
- package/dist/components/filter/OdsFilterPlus.js.map +1 -1
- package/dist/components/filter/OdsFilterTagView.js +11 -11
- package/dist/components/filter/OdsFilterTagView.js.map +1 -1
- package/dist/components/filter/styles.module.scss.js +42 -0
- package/dist/components/filter/styles.module.scss.js.map +1 -0
- package/dist/components/filter/stylesPlus.module.scss.js +46 -0
- package/dist/components/filter/stylesPlus.module.scss.js.map +1 -0
- package/dist/components/helpers/toolbarSearchBox/ToolbarSearchBox.js +4 -4
- package/dist/components/helpers/toolbarSearchBox/ToolbarSearchBox.js.map +1 -1
- package/dist/components/helpers/toolbarSearchBox/ToolbarSearchBox.module.scss.js +10 -0
- package/dist/components/helpers/toolbarSearchBox/ToolbarSearchBox.module.scss.js.map +1 -0
- package/dist/index.d.ts +112 -338
- package/dist/index.js +131 -139
- package/dist/index.js.map +1 -1
- package/dist/node_modules/@ant-design/fast-color/es/FastColor.js +0 -1
- package/dist/node_modules/@ant-design/fast-color/es/FastColor.js.map +1 -1
- package/dist/node_modules/@ant-design/icons/es/utils.js +1 -8
- package/dist/node_modules/@ant-design/icons/es/utils.js.map +1 -1
- package/dist/node_modules/@rc-component/form/es/FieldContext.js +1 -2
- package/dist/node_modules/@rc-component/form/es/FieldContext.js.map +1 -1
- package/dist/node_modules/@rc-component/form/es/Form.js +78 -92
- package/dist/node_modules/@rc-component/form/es/Form.js.map +1 -1
- package/dist/node_modules/@rc-component/form/es/{useForm.js → hooks/useForm.js} +47 -69
- package/dist/node_modules/@rc-component/form/es/hooks/useForm.js.map +1 -0
- package/dist/node_modules/@rc-component/form/es/hooks/useNotifyWatch.js +43 -0
- package/dist/node_modules/@rc-component/form/es/hooks/useNotifyWatch.js.map +1 -0
- package/dist/node_modules/@rc-component/form/es/{useWatch.js → hooks/useWatch.js} +7 -7
- package/dist/node_modules/@rc-component/form/es/hooks/useWatch.js.map +1 -0
- package/dist/node_modules/@rc-component/form/es/index.js +2 -2
- package/dist/node_modules/@rc-component/form/es/index.js.map +1 -1
- package/dist/node_modules/@rc-component/form/es/utils/valueUtil.js.map +1 -1
- package/dist/node_modules/@rc-component/portal/es/Portal.js +41 -35
- package/dist/node_modules/@rc-component/portal/es/Portal.js.map +1 -1
- package/dist/node_modules/@rc-component/portal/es/useEscKeyDown.js +28 -0
- package/dist/node_modules/@rc-component/portal/es/useEscKeyDown.js.map +1 -0
- package/dist/node_modules/@rc-component/select/es/BaseSelect/index.js +109 -109
- package/dist/node_modules/@rc-component/select/es/BaseSelect/index.js.map +1 -1
- package/dist/node_modules/@rc-component/select/es/SelectInput/Content/SingleContent.js +38 -44
- package/dist/node_modules/@rc-component/select/es/SelectInput/Content/SingleContent.js.map +1 -1
- package/dist/node_modules/@rc-component/select/es/hooks/useOpen.js +25 -25
- package/dist/node_modules/@rc-component/select/es/hooks/useOpen.js.map +1 -1
- package/dist/node_modules/@rc-component/trigger/es/hooks/useAlign.js +125 -122
- package/dist/node_modules/@rc-component/trigger/es/hooks/useAlign.js.map +1 -1
- package/dist/node_modules/@rc-component/trigger/es/util.js +35 -34
- package/dist/node_modules/@rc-component/trigger/es/util.js.map +1 -1
- package/dist/node_modules/@rc-component/util/es/KeyCode.js.map +1 -1
- package/dist/node_modules/@rc-component/util/es/isMobile.js +1 -1
- package/dist/node_modules/@rc-component/util/es/ref.js +1 -1
- package/dist/node_modules/@rc-component/util/es/utils/set.js +21 -21
- package/dist/node_modules/@rc-component/util/es/utils/set.js.map +1 -1
- package/dist/node_modules/antd/es/_util/wave/index.js +1 -1
- package/dist/node_modules/antd/es/_util/wave/index.js.map +1 -1
- package/dist/node_modules/antd/es/card/style/index.js +8 -4
- package/dist/node_modules/antd/es/card/style/index.js.map +1 -1
- package/dist/node_modules/antd/es/form/hooks/useForm.js +1 -1
- package/dist/node_modules/antd/es/form/index.js +1 -1
- package/dist/node_modules/antd/es/notification/useNotification.js +3 -3
- package/dist/node_modules/antd/es/select/style/select-input.js +12 -3
- package/dist/node_modules/antd/es/select/style/select-input.js.map +1 -1
- package/dist/node_modules/antd/es/tag/style/index.js +5 -5
- package/dist/node_modules/antd/es/tag/style/index.js.map +1 -1
- package/dist/node_modules/antd/es/theme/index.js +10 -31
- package/dist/node_modules/antd/es/theme/index.js.map +1 -1
- package/dist/node_modules/antd/es/transfer/ListBody.js +16 -16
- package/dist/node_modules/antd/es/transfer/ListBody.js.map +1 -1
- package/dist/node_modules/antd/es/transfer/ListItem.js +43 -43
- package/dist/node_modules/antd/es/transfer/ListItem.js.map +1 -1
- package/dist/node_modules/antd/es/version/version.js +1 -1
- package/dist/node_modules/antd/es/version/version.js.map +1 -1
- package/dist/node_modules/canvg/lib/index.es.js +18 -4
- package/dist/node_modules/canvg/lib/index.es.js.map +1 -1
- package/dist/node_modules/core-js/internals/a-callable.js +16 -0
- package/dist/node_modules/core-js/internals/a-callable.js.map +1 -0
- package/dist/node_modules/core-js/internals/a-constructor.js +16 -0
- package/dist/node_modules/core-js/internals/a-constructor.js.map +1 -0
- package/dist/node_modules/core-js/internals/a-possible-prototype.js +15 -0
- package/dist/node_modules/core-js/internals/a-possible-prototype.js.map +1 -0
- package/dist/node_modules/core-js/internals/add-to-unscopables.js +19 -0
- package/dist/node_modules/core-js/internals/add-to-unscopables.js.map +1 -0
- package/dist/node_modules/core-js/internals/advance-string-index.js +14 -0
- package/dist/node_modules/core-js/internals/advance-string-index.js.map +1 -0
- package/dist/node_modules/core-js/internals/an-instance.js +15 -0
- package/dist/node_modules/core-js/internals/an-instance.js.map +1 -0
- package/dist/node_modules/core-js/internals/an-object.js +15 -0
- package/dist/node_modules/core-js/internals/an-object.js.map +1 -0
- package/dist/node_modules/core-js/internals/array-includes.js +33 -0
- package/dist/node_modules/core-js/internals/array-includes.js.map +1 -0
- package/dist/node_modules/core-js/internals/array-method-is-strict.js +19 -0
- package/dist/node_modules/core-js/internals/array-method-is-strict.js.map +1 -0
- package/dist/node_modules/core-js/internals/array-reduce.js +38 -0
- package/dist/node_modules/core-js/internals/array-reduce.js.map +1 -0
- package/dist/node_modules/core-js/internals/array-slice.js +12 -0
- package/dist/node_modules/core-js/internals/array-slice.js.map +1 -0
- package/dist/node_modules/core-js/internals/check-correctness-of-iteration.js +47 -0
- package/dist/node_modules/core-js/internals/check-correctness-of-iteration.js.map +1 -0
- package/dist/node_modules/core-js/internals/classof-raw.js +14 -0
- package/dist/node_modules/core-js/internals/classof-raw.js.map +1 -0
- package/dist/node_modules/core-js/internals/classof.js +25 -0
- package/dist/node_modules/core-js/internals/classof.js.map +1 -0
- package/dist/node_modules/core-js/internals/copy-constructor-properties.js +20 -0
- package/dist/node_modules/core-js/internals/copy-constructor-properties.js.map +1 -0
- package/dist/node_modules/core-js/internals/correct-is-regexp-logic.js +23 -0
- package/dist/node_modules/core-js/internals/correct-is-regexp-logic.js.map +1 -0
- package/dist/node_modules/core-js/internals/correct-prototype-getter.js +16 -0
- package/dist/node_modules/core-js/internals/correct-prototype-getter.js.map +1 -0
- package/dist/node_modules/core-js/internals/create-iter-result-object.js +10 -0
- package/dist/node_modules/core-js/internals/create-iter-result-object.js.map +1 -0
- package/dist/node_modules/core-js/internals/create-non-enumerable-property.js +18 -0
- package/dist/node_modules/core-js/internals/create-non-enumerable-property.js.map +1 -0
- package/dist/node_modules/core-js/internals/create-property-descriptor.js +15 -0
- package/dist/node_modules/core-js/internals/create-property-descriptor.js.map +1 -0
- package/dist/node_modules/core-js/internals/define-built-in-accessor.js +15 -0
- package/dist/node_modules/core-js/internals/define-built-in-accessor.js.map +1 -0
- package/dist/node_modules/core-js/internals/define-built-in.js +33 -0
- package/dist/node_modules/core-js/internals/define-built-in.js.map +1 -0
- package/dist/node_modules/core-js/internals/define-global-property.js +19 -0
- package/dist/node_modules/core-js/internals/define-global-property.js.map +1 -0
- package/dist/node_modules/core-js/internals/descriptors.js +16 -0
- package/dist/node_modules/core-js/internals/descriptors.js.map +1 -0
- package/dist/node_modules/core-js/internals/document-create-element.js +15 -0
- package/dist/node_modules/core-js/internals/document-create-element.js.map +1 -0
- package/dist/node_modules/core-js/internals/dom-iterables.js +40 -0
- package/dist/node_modules/core-js/internals/dom-iterables.js.map +1 -0
- package/dist/node_modules/core-js/internals/dom-token-list-prototype.js +12 -0
- package/dist/node_modules/core-js/internals/dom-token-list-prototype.js.map +1 -0
- package/dist/node_modules/core-js/internals/enum-bug-keys.js +16 -0
- package/dist/node_modules/core-js/internals/enum-bug-keys.js.map +1 -0
- package/dist/node_modules/core-js/internals/environment-is-ios-pebble.js +12 -0
- package/dist/node_modules/core-js/internals/environment-is-ios-pebble.js.map +1 -0
- package/dist/node_modules/core-js/internals/environment-is-ios.js +12 -0
- package/dist/node_modules/core-js/internals/environment-is-ios.js.map +1 -0
- package/dist/node_modules/core-js/internals/environment-is-node.js +12 -0
- package/dist/node_modules/core-js/internals/environment-is-node.js.map +1 -0
- package/dist/node_modules/core-js/internals/environment-is-webos-webkit.js +12 -0
- package/dist/node_modules/core-js/internals/environment-is-webos-webkit.js.map +1 -0
- package/dist/node_modules/core-js/internals/environment-user-agent.js +12 -0
- package/dist/node_modules/core-js/internals/environment-user-agent.js.map +1 -0
- package/dist/node_modules/core-js/internals/environment-v8-version.js +13 -0
- package/dist/node_modules/core-js/internals/environment-v8-version.js.map +1 -0
- package/dist/node_modules/core-js/internals/environment.js +18 -0
- package/dist/node_modules/core-js/internals/environment.js.map +1 -0
- package/dist/node_modules/core-js/internals/export.js +27 -0
- package/dist/node_modules/core-js/internals/export.js.map +1 -0
- package/dist/node_modules/core-js/internals/fails.js +14 -0
- package/dist/node_modules/core-js/internals/fails.js.map +1 -0
- package/dist/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js +44 -0
- package/dist/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-apply.js +14 -0
- package/dist/node_modules/core-js/internals/function-apply.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-bind-context.js +18 -0
- package/dist/node_modules/core-js/internals/function-bind-context.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-bind-native.js +16 -0
- package/dist/node_modules/core-js/internals/function-bind-native.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-call.js +14 -0
- package/dist/node_modules/core-js/internals/function-call.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-name.js +18 -0
- package/dist/node_modules/core-js/internals/function-name.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-uncurry-this-accessor.js +18 -0
- package/dist/node_modules/core-js/internals/function-uncurry-this-accessor.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-uncurry-this-clause.js +15 -0
- package/dist/node_modules/core-js/internals/function-uncurry-this-clause.js.map +1 -0
- package/dist/node_modules/core-js/internals/function-uncurry-this.js +16 -0
- package/dist/node_modules/core-js/internals/function-uncurry-this.js.map +1 -0
- package/dist/node_modules/core-js/internals/get-built-in.js +17 -0
- package/dist/node_modules/core-js/internals/get-built-in.js.map +1 -0
- package/dist/node_modules/core-js/internals/get-iterator-method.js +18 -0
- package/dist/node_modules/core-js/internals/get-iterator-method.js.map +1 -0
- package/dist/node_modules/core-js/internals/get-iterator.js +20 -0
- package/dist/node_modules/core-js/internals/get-iterator.js.map +1 -0
- package/dist/node_modules/core-js/internals/get-method.js +16 -0
- package/dist/node_modules/core-js/internals/get-method.js.map +1 -0
- package/dist/node_modules/core-js/internals/get-substitution.js +40 -0
- package/dist/node_modules/core-js/internals/get-substitution.js.map +1 -0
- package/dist/node_modules/core-js/internals/global-this.js +19 -0
- package/dist/node_modules/core-js/internals/global-this.js.map +1 -0
- package/dist/node_modules/core-js/internals/has-own-property.js +15 -0
- package/dist/node_modules/core-js/internals/has-own-property.js.map +1 -0
- package/dist/node_modules/core-js/internals/hidden-keys.js +8 -0
- package/dist/node_modules/core-js/internals/hidden-keys.js.map +1 -0
- package/dist/node_modules/core-js/internals/host-report-errors.js +13 -0
- package/dist/node_modules/core-js/internals/host-report-errors.js.map +1 -0
- package/dist/node_modules/core-js/internals/html.js +12 -0
- package/dist/node_modules/core-js/internals/html.js.map +1 -0
- package/dist/node_modules/core-js/internals/ie8-dom-define.js +20 -0
- package/dist/node_modules/core-js/internals/ie8-dom-define.js.map +1 -0
- package/dist/node_modules/core-js/internals/indexed-object.js +18 -0
- package/dist/node_modules/core-js/internals/indexed-object.js.map +1 -0
- package/dist/node_modules/core-js/internals/inspect-source.js +16 -0
- package/dist/node_modules/core-js/internals/inspect-source.js.map +1 -0
- package/dist/node_modules/core-js/internals/internal-state.js +55 -0
- package/dist/node_modules/core-js/internals/internal-state.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-array-iterator-method.js +15 -0
- package/dist/node_modules/core-js/internals/is-array-iterator-method.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-array.js +14 -0
- package/dist/node_modules/core-js/internals/is-array.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-callable.js +15 -0
- package/dist/node_modules/core-js/internals/is-callable.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-constructor.js +43 -0
- package/dist/node_modules/core-js/internals/is-constructor.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-forced.js +18 -0
- package/dist/node_modules/core-js/internals/is-forced.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-null-or-undefined.js +10 -0
- package/dist/node_modules/core-js/internals/is-null-or-undefined.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-object.js +14 -0
- package/dist/node_modules/core-js/internals/is-object.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-possible-prototype.js +14 -0
- package/dist/node_modules/core-js/internals/is-possible-prototype.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-pure.js +8 -0
- package/dist/node_modules/core-js/internals/is-pure.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-regexp.js +17 -0
- package/dist/node_modules/core-js/internals/is-regexp.js.map +1 -0
- package/dist/node_modules/core-js/internals/is-symbol.js +20 -0
- package/dist/node_modules/core-js/internals/is-symbol.js.map +1 -0
- package/dist/node_modules/core-js/internals/iterate.js +51 -0
- package/dist/node_modules/core-js/internals/iterate.js.map +1 -0
- package/dist/node_modules/core-js/internals/iterator-close.js +29 -0
- package/dist/node_modules/core-js/internals/iterator-close.js.map +1 -0
- package/dist/node_modules/core-js/internals/iterator-create-constructor.js +21 -0
- package/dist/node_modules/core-js/internals/iterator-create-constructor.js.map +1 -0
- package/dist/node_modules/core-js/internals/iterator-define.js +61 -0
- package/dist/node_modules/core-js/internals/iterator-define.js.map +1 -0
- package/dist/node_modules/core-js/internals/iterators-core.js +29 -0
- package/dist/node_modules/core-js/internals/iterators-core.js.map +1 -0
- package/dist/node_modules/core-js/internals/iterators.js +8 -0
- package/dist/node_modules/core-js/internals/iterators.js.map +1 -0
- package/dist/node_modules/core-js/internals/length-of-array-like.js +14 -0
- package/dist/node_modules/core-js/internals/length-of-array-like.js.map +1 -0
- package/dist/node_modules/core-js/internals/make-built-in.js +33 -0
- package/dist/node_modules/core-js/internals/make-built-in.js.map +1 -0
- package/dist/node_modules/core-js/internals/math-trunc.js +14 -0
- package/dist/node_modules/core-js/internals/math-trunc.js.map +1 -0
- package/dist/node_modules/core-js/internals/microtask.js +42 -0
- package/dist/node_modules/core-js/internals/microtask.js.map +1 -0
- package/dist/node_modules/core-js/internals/new-promise-capability.js +21 -0
- package/dist/node_modules/core-js/internals/new-promise-capability.js.map +1 -0
- package/dist/node_modules/core-js/internals/not-a-regexp.js +16 -0
- package/dist/node_modules/core-js/internals/not-a-regexp.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-create.js +39 -0
- package/dist/node_modules/core-js/internals/object-create.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-define-properties.js +22 -0
- package/dist/node_modules/core-js/internals/object-define-properties.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-define-property.js +34 -0
- package/dist/node_modules/core-js/internals/object-define-property.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-get-own-property-descriptor.js +26 -0
- package/dist/node_modules/core-js/internals/object-get-own-property-descriptor.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-get-own-property-names.js +16 -0
- package/dist/node_modules/core-js/internals/object-get-own-property-names.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-get-own-property-symbols.js +9 -0
- package/dist/node_modules/core-js/internals/object-get-own-property-symbols.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-get-prototype-of.js +21 -0
- package/dist/node_modules/core-js/internals/object-get-prototype-of.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-is-prototype-of.js +12 -0
- package/dist/node_modules/core-js/internals/object-is-prototype-of.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-keys-internal.js +21 -0
- package/dist/node_modules/core-js/internals/object-keys-internal.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-keys.js +15 -0
- package/dist/node_modules/core-js/internals/object-keys.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-property-is-enumerable.js +15 -0
- package/dist/node_modules/core-js/internals/object-property-is-enumerable.js.map +1 -0
- package/dist/node_modules/core-js/internals/object-set-prototype-of.js +24 -0
- package/dist/node_modules/core-js/internals/object-set-prototype-of.js.map +1 -0
- package/dist/node_modules/core-js/internals/ordinary-to-primitive.js +18 -0
- package/dist/node_modules/core-js/internals/ordinary-to-primitive.js.map +1 -0
- package/dist/node_modules/core-js/internals/own-keys.js +19 -0
- package/dist/node_modules/core-js/internals/own-keys.js.map +1 -0
- package/dist/node_modules/core-js/internals/path.js +12 -0
- package/dist/node_modules/core-js/internals/path.js.map +1 -0
- package/dist/node_modules/core-js/internals/perform.js +14 -0
- package/dist/node_modules/core-js/internals/perform.js.map +1 -0
- package/dist/node_modules/core-js/internals/promise-constructor-detection.js +39 -0
- package/dist/node_modules/core-js/internals/promise-constructor-detection.js.map +1 -0
- package/dist/node_modules/core-js/internals/promise-native-constructor.js +12 -0
- package/dist/node_modules/core-js/internals/promise-native-constructor.js.map +1 -0
- package/dist/node_modules/core-js/internals/promise-resolve.js +18 -0
- package/dist/node_modules/core-js/internals/promise-resolve.js.map +1 -0
- package/dist/node_modules/core-js/internals/promise-statics-incorrect-iteration.js +17 -0
- package/dist/node_modules/core-js/internals/promise-statics-incorrect-iteration.js.map +1 -0
- package/dist/node_modules/core-js/internals/queue.js +25 -0
- package/dist/node_modules/core-js/internals/queue.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-exec-abstract.js +24 -0
- package/dist/node_modules/core-js/internals/regexp-exec-abstract.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-exec.js +37 -0
- package/dist/node_modules/core-js/internals/regexp-exec.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-flags-detection.js +35 -0
- package/dist/node_modules/core-js/internals/regexp-flags-detection.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-flags.js +15 -0
- package/dist/node_modules/core-js/internals/regexp-flags.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-get-flags.js +20 -0
- package/dist/node_modules/core-js/internals/regexp-get-flags.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-sticky-helpers.js +25 -0
- package/dist/node_modules/core-js/internals/regexp-sticky-helpers.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-unsupported-dot-all.js +17 -0
- package/dist/node_modules/core-js/internals/regexp-unsupported-dot-all.js.map +1 -0
- package/dist/node_modules/core-js/internals/regexp-unsupported-ncg.js +16 -0
- package/dist/node_modules/core-js/internals/regexp-unsupported-ncg.js.map +1 -0
- package/dist/node_modules/core-js/internals/require-object-coercible.js +15 -0
- package/dist/node_modules/core-js/internals/require-object-coercible.js.map +1 -0
- package/dist/node_modules/core-js/internals/safe-get-built-in.js +17 -0
- package/dist/node_modules/core-js/internals/safe-get-built-in.js.map +1 -0
- package/dist/node_modules/core-js/internals/set-species.js +23 -0
- package/dist/node_modules/core-js/internals/set-species.js.map +1 -0
- package/dist/node_modules/core-js/internals/set-to-string-tag.js +16 -0
- package/dist/node_modules/core-js/internals/set-to-string-tag.js.map +1 -0
- package/dist/node_modules/core-js/internals/shared-key.js +15 -0
- package/dist/node_modules/core-js/internals/shared-key.js.map +1 -0
- package/dist/node_modules/core-js/internals/shared-store.js +21 -0
- package/dist/node_modules/core-js/internals/shared-store.js.map +1 -0
- package/dist/node_modules/core-js/internals/shared.js +14 -0
- package/dist/node_modules/core-js/internals/shared.js.map +1 -0
- package/dist/node_modules/core-js/internals/species-constructor.js +18 -0
- package/dist/node_modules/core-js/internals/species-constructor.js.map +1 -0
- package/dist/node_modules/core-js/internals/string-multibyte.js +27 -0
- package/dist/node_modules/core-js/internals/string-multibyte.js.map +1 -0
- package/dist/node_modules/core-js/internals/string-trim-forced.js +18 -0
- package/dist/node_modules/core-js/internals/string-trim-forced.js.map +1 -0
- package/dist/node_modules/core-js/internals/string-trim.js +30 -0
- package/dist/node_modules/core-js/internals/string-trim.js.map +1 -0
- package/dist/node_modules/core-js/internals/symbol-constructor-detection.js +18 -0
- package/dist/node_modules/core-js/internals/symbol-constructor-detection.js.map +1 -0
- package/dist/node_modules/core-js/internals/task.js +61 -0
- package/dist/node_modules/core-js/internals/task.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-absolute-index.js +15 -0
- package/dist/node_modules/core-js/internals/to-absolute-index.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-indexed-object.js +15 -0
- package/dist/node_modules/core-js/internals/to-indexed-object.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-integer-or-infinity.js +15 -0
- package/dist/node_modules/core-js/internals/to-integer-or-infinity.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-length.js +15 -0
- package/dist/node_modules/core-js/internals/to-length.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-object.js +14 -0
- package/dist/node_modules/core-js/internals/to-object.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-primitive.js +25 -0
- package/dist/node_modules/core-js/internals/to-primitive.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-property-key.js +16 -0
- package/dist/node_modules/core-js/internals/to-property-key.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-string-tag-support.js +12 -0
- package/dist/node_modules/core-js/internals/to-string-tag-support.js.map +1 -0
- package/dist/node_modules/core-js/internals/to-string.js +15 -0
- package/dist/node_modules/core-js/internals/to-string.js.map +1 -0
- package/dist/node_modules/core-js/internals/try-to-string.js +17 -0
- package/dist/node_modules/core-js/internals/try-to-string.js.map +1 -0
- package/dist/node_modules/core-js/internals/uid.js +14 -0
- package/dist/node_modules/core-js/internals/uid.js.map +1 -0
- package/dist/node_modules/core-js/internals/use-symbol-as-uid.js +12 -0
- package/dist/node_modules/core-js/internals/use-symbol-as-uid.js.map +1 -0
- package/dist/node_modules/core-js/internals/v8-prototype-define-bug.js +19 -0
- package/dist/node_modules/core-js/internals/v8-prototype-define-bug.js.map +1 -0
- package/dist/node_modules/core-js/internals/validate-arguments-length.js +14 -0
- package/dist/node_modules/core-js/internals/validate-arguments-length.js.map +1 -0
- package/dist/node_modules/core-js/internals/weak-map-basic-detection.js +13 -0
- package/dist/node_modules/core-js/internals/weak-map-basic-detection.js.map +1 -0
- package/dist/node_modules/core-js/internals/well-known-symbol.js +19 -0
- package/dist/node_modules/core-js/internals/well-known-symbol.js.map +1 -0
- package/dist/node_modules/core-js/internals/whitespaces.js +9 -0
- package/dist/node_modules/core-js/internals/whitespaces.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.array.index-of.js +21 -0
- package/dist/node_modules/core-js/modules/es.array.index-of.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.array.iterator.js +47 -0
- package/dist/node_modules/core-js/modules/es.array.iterator.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.array.reduce.js +22 -0
- package/dist/node_modules/core-js/modules/es.array.reduce.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.array.reverse.js +19 -0
- package/dist/node_modules/core-js/modules/es.array.reverse.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.promise.all.js +32 -0
- package/dist/node_modules/core-js/modules/es.promise.all.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.promise.catch.js +27 -0
- package/dist/node_modules/core-js/modules/es.promise.catch.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.promise.constructor.js +143 -0
- package/dist/node_modules/core-js/modules/es.promise.constructor.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.promise.js +15 -0
- package/dist/node_modules/core-js/modules/es.promise.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.promise.race.js +29 -0
- package/dist/node_modules/core-js/modules/es.promise.race.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.promise.reject.js +20 -0
- package/dist/node_modules/core-js/modules/es.promise.reject.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.promise.resolve.js +22 -0
- package/dist/node_modules/core-js/modules/es.promise.resolve.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.regexp.exec.js +16 -0
- package/dist/node_modules/core-js/modules/es.regexp.exec.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.regexp.to-string.js +23 -0
- package/dist/node_modules/core-js/modules/es.regexp.to-string.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.string.ends-with.js +31 -0
- package/dist/node_modules/core-js/modules/es.string.ends-with.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.string.includes.js +26 -0
- package/dist/node_modules/core-js/modules/es.string.includes.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.string.match.js +48 -0
- package/dist/node_modules/core-js/modules/es.string.match.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.string.replace.js +81 -0
- package/dist/node_modules/core-js/modules/es.string.replace.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.string.split.js +75 -0
- package/dist/node_modules/core-js/modules/es.string.split.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.string.starts-with.js +31 -0
- package/dist/node_modules/core-js/modules/es.string.starts-with.js.map +1 -0
- package/dist/node_modules/core-js/modules/es.string.trim.js +19 -0
- package/dist/node_modules/core-js/modules/es.string.trim.js.map +1 -0
- package/dist/node_modules/core-js/modules/web.dom-collections.iterator.js +37 -0
- package/dist/node_modules/core-js/modules/web.dom-collections.iterator.js.map +1 -0
- package/dist/node_modules/exceljs/dist/exceljs.min.js +91 -508
- package/dist/node_modules/exceljs/dist/exceljs.min.js.map +1 -1
- package/dist/node_modules/html2canvas/dist/html2canvas.esm.js +5 -55
- package/dist/node_modules/html2canvas/dist/html2canvas.esm.js.map +1 -1
- package/dist/node_modules/is-mobile/index.js +1 -1
- package/dist/node_modules/jspdf/dist/jspdf.es.min.js +8 -53
- package/dist/node_modules/jspdf/dist/jspdf.es.min.js.map +1 -1
- package/dist/node_modules/ods-icon/react/24/outline/index.js +1 -1
- package/dist/node_modules/raf/index.js +1 -1
- package/dist/node_modules/react-is/cjs/react-is.development.js +82 -56
- package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -1
- package/dist/node_modules/{@rc-component/util/node_modules/react-is → react-is}/cjs/react-is.production.min.js +1 -1
- package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -0
- package/dist/node_modules/react-is/index.js +6 -6
- package/dist/node_modules/react-is/index.js.map +1 -1
- package/dist/ods-component-lib.css +1 -0
- package/dist/providers/OdsConfigProvider.js +47 -0
- package/dist/providers/OdsConfigProvider.js.map +1 -0
- package/dist/styles/OdsDataGrid.css +1 -0
- package/dist/styles/datagrid-globals.css +1 -0
- package/dist/utils/ExportDataGridtoExcel.js +1 -1
- package/dist/utils/ExportDataGridtoExcel.js.map +1 -1
- package/dist/utils/commonFunctions.js +5 -5
- package/dist/utils/commonFunctions.js.map +1 -1
- package/package.json +30 -20
- package/dist/_virtual/hoist-non-react-statics.cjs.js +0 -8
- package/dist/_virtual/hoist-non-react-statics.cjs.js.map +0 -1
- package/dist/_virtual/index10.js +0 -5
- package/dist/_virtual/index10.js.map +0 -1
- package/dist/_virtual/index11.js +0 -6
- package/dist/_virtual/index11.js.map +0 -1
- package/dist/_virtual/index12.js.map +0 -1
- package/dist/_virtual/index13.js +0 -8
- package/dist/_virtual/index13.js.map +0 -1
- package/dist/_virtual/index14.js.map +0 -1
- package/dist/_virtual/react-is.development2.js +0 -5
- package/dist/_virtual/react-is.development2.js.map +0 -1
- package/dist/_virtual/react-is.development3.js +0 -5
- package/dist/_virtual/react-is.development3.js.map +0 -1
- package/dist/_virtual/react-is.production.js +0 -5
- package/dist/_virtual/react-is.production.js.map +0 -1
- package/dist/_virtual/react-is.production.min2.js +0 -5
- package/dist/_virtual/react-is.production.min2.js.map +0 -1
- package/dist/components/antd/alert/OdsAlert.styled.js +0 -9
- package/dist/components/antd/alert/OdsAlert.styled.js.map +0 -1
- package/dist/components/antd/alert/OdsBannerAlert.js +0 -16
- package/dist/components/antd/alert/OdsBannerAlert.js.map +0 -1
- package/dist/components/antd/autocomplete/OdsAutoComplete.styled.js +0 -9
- package/dist/components/antd/autocomplete/OdsAutoComplete.styled.js.map +0 -1
- package/dist/components/antd/badge/OdsBadge.styled.js +0 -9
- package/dist/components/antd/badge/OdsBadge.styled.js.map +0 -1
- package/dist/components/antd/button/OdsButton.styled.js +0 -9
- package/dist/components/antd/button/OdsButton.styled.js.map +0 -1
- package/dist/components/antd/calendar/OdsCalendar.styled.js +0 -9
- package/dist/components/antd/calendar/OdsCalendar.styled.js.map +0 -1
- package/dist/components/antd/card/OdsCard.styled.js +0 -9
- package/dist/components/antd/card/OdsCard.styled.js.map +0 -1
- package/dist/components/antd/change/OdsChange.Style.js +0 -24
- package/dist/components/antd/change/OdsChange.Style.js.map +0 -1
- package/dist/components/antd/checkbox/OdsCheckbox.styled.js +0 -9
- package/dist/components/antd/checkbox/OdsCheckbox.styled.js.map +0 -1
- package/dist/components/antd/collapse/OdsCollapse.styled.js +0 -9
- package/dist/components/antd/collapse/OdsCollapse.styled.js.map +0 -1
- package/dist/components/antd/divider/OdsDivider.styled.js +0 -9
- package/dist/components/antd/divider/OdsDivider.styled.js.map +0 -1
- package/dist/components/antd/dropdown/OdsDropdown.styled.js +0 -9
- package/dist/components/antd/dropdown/OdsDropdown.styled.js.map +0 -1
- package/dist/components/antd/input/OdsInput.styled.js +0 -9
- package/dist/components/antd/input/OdsInput.styled.js.map +0 -1
- package/dist/components/antd/inputNumber/OdsInputNumber.styled.js +0 -9
- package/dist/components/antd/inputNumber/OdsInputNumber.styled.js.map +0 -1
- package/dist/components/antd/list/OdsList.styled.js +0 -9
- package/dist/components/antd/list/OdsList.styled.js.map +0 -1
- package/dist/components/antd/progress/OdsProgress.styled.js +0 -12
- package/dist/components/antd/progress/OdsProgress.styled.js.map +0 -1
- package/dist/components/antd/radio/OdsRadio.styled.js +0 -9
- package/dist/components/antd/radio/OdsRadio.styled.js.map +0 -1
- package/dist/components/antd/rate/OdsRate.styled.js +0 -9
- package/dist/components/antd/rate/OdsRate.styled.js.map +0 -1
- package/dist/components/antd/select/MultiSelect/OdsMultiSelect.js +0 -55
- package/dist/components/antd/select/MultiSelect/OdsMultiSelect.js.map +0 -1
- package/dist/components/antd/select/OdsSelect.styled.js +0 -9
- package/dist/components/antd/select/OdsSelect.styled.js.map +0 -1
- package/dist/components/antd/spin/OdsSpin.styled.js +0 -9
- package/dist/components/antd/spin/OdsSpin.styled.js.map +0 -1
- package/dist/components/antd/switch/OdsSwitch.styled.js +0 -9
- package/dist/components/antd/switch/OdsSwitch.styled.js.map +0 -1
- package/dist/components/antd/tab/OdsTab.styled.js +0 -9
- package/dist/components/antd/tab/OdsTab.styled.js.map +0 -1
- package/dist/components/antd/table/OdsBasicTable.js +0 -10
- package/dist/components/antd/table/OdsBasicTable.js.map +0 -1
- package/dist/components/antd/table/OdsSelectableTable.js +0 -23
- package/dist/components/antd/table/OdsSelectableTable.js.map +0 -1
- package/dist/components/antd/table/OdsTable.styled.js +0 -9
- package/dist/components/antd/table/OdsTable.styled.js.map +0 -1
- package/dist/components/antd/tag/OdsTag.styled.js +0 -9
- package/dist/components/antd/tag/OdsTag.styled.js.map +0 -1
- package/dist/components/antd/timeline/OdsTimeline.styled.js +0 -9
- package/dist/components/antd/timeline/OdsTimeline.styled.js.map +0 -1
- package/dist/components/antd/timepicker/OdsTimepicker.styled.js +0 -9
- package/dist/components/antd/timepicker/OdsTimepicker.styled.js.map +0 -1
- package/dist/components/antd/treeListMenu/OdsTreeListMenu.Styles.js +0 -57
- package/dist/components/antd/treeListMenu/OdsTreeListMenu.Styles.js.map +0 -1
- package/dist/components/antd/treeListMenu/OdsTreeListMenu.js +0 -217
- package/dist/components/antd/treeListMenu/OdsTreeListMenu.js.map +0 -1
- package/dist/components/antd/typography/Typography.styled.js +0 -15
- package/dist/components/antd/typography/Typography.styled.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/OdsGlobal.Styles.js +0 -162
- package/dist/components/devextreme/DataGrid/styles/OdsGlobal.Styles.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/styles.js +0 -1236
- package/dist/components/devextreme/DataGrid/styles/styles.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/theme/colors/dark.js +0 -38
- package/dist/components/devextreme/DataGrid/styles/theme/colors/dark.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/theme/colors/default.js +0 -38
- package/dist/components/devextreme/DataGrid/styles/theme/colors/default.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/theme/colors/index.js +0 -12
- package/dist/components/devextreme/DataGrid/styles/theme/colors/index.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/theme/sizes/compact.js +0 -125
- package/dist/components/devextreme/DataGrid/styles/theme/sizes/compact.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/theme/sizes/default.js +0 -125
- package/dist/components/devextreme/DataGrid/styles/theme/sizes/default.js.map +0 -1
- package/dist/components/devextreme/DataGrid/styles/theme/sizes/index.js +0 -9
- package/dist/components/devextreme/DataGrid/styles/theme/sizes/index.js.map +0 -1
- package/dist/components/devextreme/DxDataGrid.css +0 -1
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.Style.js +0 -42
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.Style.js.map +0 -1
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.Style.js +0 -42
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.Style.js.map +0 -1
- package/dist/components/devextreme/OdsInlineEditDataGrid/styles.js +0 -92
- package/dist/components/devextreme/OdsInlineEditDataGrid/styles.js.map +0 -1
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.Style.js +0 -49
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.Style.js.map +0 -1
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.css +0 -1
- package/dist/components/devextreme/OdsServerSideDatagrid/OdsServerSideDatagrid.Style.js +0 -60
- package/dist/components/devextreme/OdsServerSideDatagrid/OdsServerSideDatagrid.Style.js.map +0 -1
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.Style.js +0 -70
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.Style.js.map +0 -1
- package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.css +0 -1
- package/dist/components/devextreme/styles.css +0 -1
- package/dist/components/filter/styles.js +0 -169
- package/dist/components/filter/styles.js.map +0 -1
- package/dist/components/filter/stylesPlus.js +0 -147
- package/dist/components/filter/stylesPlus.js.map +0 -1
- package/dist/components/helpers/toolbarSearchBox/ToolbarSearchBox.Style.js +0 -19
- package/dist/components/helpers/toolbarSearchBox/ToolbarSearchBox.Style.js.map +0 -1
- package/dist/node_modules/@ant-design/icons/es/icons/FrownOutlined.js +0 -23
- package/dist/node_modules/@ant-design/icons/es/icons/FrownOutlined.js.map +0 -1
- package/dist/node_modules/@ant-design/icons/es/icons/HeartOutlined.js +0 -23
- package/dist/node_modules/@ant-design/icons/es/icons/HeartOutlined.js.map +0 -1
- package/dist/node_modules/@ant-design/icons/es/icons/MehOutlined.js +0 -23
- package/dist/node_modules/@ant-design/icons/es/icons/MehOutlined.js.map +0 -1
- package/dist/node_modules/@ant-design/icons/es/icons/SmileOutlined.js +0 -23
- package/dist/node_modules/@ant-design/icons/es/icons/SmileOutlined.js.map +0 -1
- package/dist/node_modules/@ant-design/icons-svg/es/asn/FrownOutlined.js +0 -5
- package/dist/node_modules/@ant-design/icons-svg/es/asn/FrownOutlined.js.map +0 -1
- package/dist/node_modules/@ant-design/icons-svg/es/asn/HeartOutlined.js +0 -5
- package/dist/node_modules/@ant-design/icons-svg/es/asn/HeartOutlined.js.map +0 -1
- package/dist/node_modules/@ant-design/icons-svg/es/asn/MehOutlined.js +0 -5
- package/dist/node_modules/@ant-design/icons-svg/es/asn/MehOutlined.js.map +0 -1
- package/dist/node_modules/@ant-design/icons-svg/es/asn/SmileOutlined.js +0 -5
- package/dist/node_modules/@ant-design/icons-svg/es/asn/SmileOutlined.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +0 -14
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +0 -13
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +0 -1
- package/dist/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js +0 -280
- package/dist/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js.map +0 -1
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Enum.js +0 -13
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Enum.js.map +0 -1
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Middleware.js +0 -19
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Middleware.js.map +0 -1
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Parser.js +0 -132
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Parser.js.map +0 -1
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Serializer.js +0 -28
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Serializer.js.map +0 -1
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Tokenizer.js +0 -142
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Tokenizer.js.map +0 -1
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Utility.js +0 -51
- package/dist/node_modules/@emotion/cache/node_modules/stylis/src/Utility.js.map +0 -1
- package/dist/node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js +0 -87
- package/dist/node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js.map +0 -1
- package/dist/node_modules/@emotion/css/dist/emotion-css.esm.js +0 -8
- package/dist/node_modules/@emotion/css/dist/emotion-css.esm.js.map +0 -1
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js +0 -11
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js.map +0 -1
- package/dist/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js +0 -10
- package/dist/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +0 -1
- package/dist/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js +0 -73
- package/dist/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js.map +0 -1
- package/dist/node_modules/@emotion/react/dist/emotion-react.browser.esm.js +0 -54
- package/dist/node_modules/@emotion/react/dist/emotion-react.browser.esm.js.map +0 -1
- package/dist/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js +0 -131
- package/dist/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js.map +0 -1
- package/dist/node_modules/@emotion/serialize/node_modules/@emotion/hash/dist/emotion-hash.esm.js +0 -23
- package/dist/node_modules/@emotion/serialize/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +0 -1
- package/dist/node_modules/@emotion/serialize/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js +0 -54
- package/dist/node_modules/@emotion/serialize/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js.map +0 -1
- package/dist/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js +0 -45
- package/dist/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js.map +0 -1
- package/dist/node_modules/@emotion/stylis/dist/stylis.browser.esm.js +0 -407
- package/dist/node_modules/@emotion/stylis/dist/stylis.browser.esm.js.map +0 -1
- package/dist/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js +0 -9
- package/dist/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js.map +0 -1
- package/dist/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js +0 -35
- package/dist/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js.map +0 -1
- package/dist/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js +0 -13
- package/dist/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js.map +0 -1
- package/dist/node_modules/@rc-component/form/es/BatchUpdate.js +0 -21
- package/dist/node_modules/@rc-component/form/es/BatchUpdate.js.map +0 -1
- package/dist/node_modules/@rc-component/form/es/useForm.js.map +0 -1
- package/dist/node_modules/@rc-component/form/es/useWatch.js.map +0 -1
- package/dist/node_modules/@rc-component/util/node_modules/react-is/cjs/react-is.development.js +0 -96
- package/dist/node_modules/@rc-component/util/node_modules/react-is/cjs/react-is.development.js.map +0 -1
- package/dist/node_modules/@rc-component/util/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
- package/dist/node_modules/@rc-component/util/node_modules/react-is/index.js +0 -12
- package/dist/node_modules/@rc-component/util/node_modules/react-is/index.js.map +0 -1
- package/dist/node_modules/antd/es/message/PurePanel.js +0 -89
- package/dist/node_modules/antd/es/message/PurePanel.js.map +0 -1
- package/dist/node_modules/antd/es/message/index.js +0 -183
- package/dist/node_modules/antd/es/message/index.js.map +0 -1
- package/dist/node_modules/antd/es/message/style/index.js +0 -159
- package/dist/node_modules/antd/es/message/style/index.js.map +0 -1
- package/dist/node_modules/antd/es/message/useMessage.js +0 -186
- package/dist/node_modules/antd/es/message/useMessage.js.map +0 -1
- package/dist/node_modules/antd/es/message/util.js +0 -21
- package/dist/node_modules/antd/es/message/util.js.map +0 -1
- package/dist/node_modules/antd/es/theme/getDesignToken.js +0 -18
- package/dist/node_modules/antd/es/theme/getDesignToken.js.map +0 -1
- package/dist/node_modules/antd/es/theme/themes/compact/genCompactSizeMapToken.js +0 -21
- package/dist/node_modules/antd/es/theme/themes/compact/genCompactSizeMapToken.js.map +0 -1
- package/dist/node_modules/antd/es/theme/themes/compact/index.js +0 -22
- package/dist/node_modules/antd/es/theme/themes/compact/index.js.map +0 -1
- package/dist/node_modules/antd/es/theme/themes/dark/colorAlgorithm.js +0 -7
- package/dist/node_modules/antd/es/theme/themes/dark/colorAlgorithm.js.map +0 -1
- package/dist/node_modules/antd/es/theme/themes/dark/colors.js +0 -49
- package/dist/node_modules/antd/es/theme/themes/dark/colors.js.map +0 -1
- package/dist/node_modules/antd/es/theme/themes/dark/index.js +0 -36
- package/dist/node_modules/antd/es/theme/themes/dark/index.js.map +0 -1
- package/dist/node_modules/antd-style/es/context/ThemeModeContext.js +0 -16
- package/dist/node_modules/antd-style/es/context/ThemeModeContext.js.map +0 -1
- package/dist/node_modules/antd-style/es/core/CacheManager.js +0 -46
- package/dist/node_modules/antd-style/es/core/CacheManager.js.map +0 -1
- package/dist/node_modules/antd-style/es/core/createCSS.js +0 -32
- package/dist/node_modules/antd-style/es/core/createCSS.js.map +0 -1
- package/dist/node_modules/antd-style/es/core/createSerializeStyles.js +0 -13
- package/dist/node_modules/antd-style/es/core/createSerializeStyles.js.map +0 -1
- package/dist/node_modules/antd-style/es/core/index.js +0 -5
- package/dist/node_modules/antd-style/es/core/index.js.map +0 -1
- package/dist/node_modules/antd-style/es/core/insertStyles.js +0 -22
- package/dist/node_modules/antd-style/es/core/insertStyles.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createEmotionContext.js +0 -8
- package/dist/node_modules/antd-style/es/factories/createEmotionContext.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createGlobalStyle.js +0 -23
- package/dist/node_modules/antd-style/es/factories/createGlobalStyle.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createStyish.js +0 -13
- package/dist/node_modules/antd-style/es/factories/createStyish.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createStyleProvider/index.js +0 -47
- package/dist/node_modules/antd-style/es/factories/createStyleProvider/index.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createStyledThemeProvider.js +0 -15
- package/dist/node_modules/antd-style/es/factories/createStyledThemeProvider.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createStyles/index.js +0 -57
- package/dist/node_modules/antd-style/es/factories/createStyles/index.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createStyles/response.js +0 -29
- package/dist/node_modules/antd-style/es/factories/createStyles/response.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/AntdProvider.js +0 -42
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/AntdProvider.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/ThemeSwitcher.js +0 -71
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/ThemeSwitcher.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/TokenContainer.js +0 -44
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/TokenContainer.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/index.js +0 -47
- package/dist/node_modules/antd-style/es/factories/createThemeProvider/index.js.map +0 -1
- package/dist/node_modules/antd-style/es/factories/createUseTheme.js +0 -24
- package/dist/node_modules/antd-style/es/factories/createUseTheme.js.map +0 -1
- package/dist/node_modules/antd-style/es/functions/createInstance.js +0 -77
- package/dist/node_modules/antd-style/es/functions/createInstance.js.map +0 -1
- package/dist/node_modules/antd-style/es/functions/index.js +0 -12
- package/dist/node_modules/antd-style/es/functions/index.js.map +0 -1
- package/dist/node_modules/antd-style/es/functions/setupStyled.js +0 -7
- package/dist/node_modules/antd-style/es/functions/setupStyled.js.map +0 -1
- package/dist/node_modules/antd-style/es/hooks/useAntdStylish.js +0 -19
- package/dist/node_modules/antd-style/es/hooks/useAntdStylish.js.map +0 -1
- package/dist/node_modules/antd-style/es/hooks/useAntdTheme.js +0 -16
- package/dist/node_modules/antd-style/es/hooks/useAntdTheme.js.map +0 -1
- package/dist/node_modules/antd-style/es/hooks/useAntdToken.js +0 -9
- package/dist/node_modules/antd-style/es/hooks/useAntdToken.js.map +0 -1
- package/dist/node_modules/antd-style/es/hooks/useThemeMode.js +0 -9
- package/dist/node_modules/antd-style/es/hooks/useThemeMode.js.map +0 -1
- package/dist/node_modules/antd-style/es/stylish/button.js +0 -22
- package/dist/node_modules/antd-style/es/stylish/button.js.map +0 -1
- package/dist/node_modules/antd-style/es/utils/convertStylish.js +0 -11
- package/dist/node_modules/antd-style/es/utils/convertStylish.js.map +0 -1
- package/dist/node_modules/antd-style/es/utils/css.js +0 -39
- package/dist/node_modules/antd-style/es/utils/css.js.map +0 -1
- package/dist/node_modules/antd-style/es/utils/matchBrowserPrefers.js +0 -9
- package/dist/node_modules/antd-style/es/utils/matchBrowserPrefers.js.map +0 -1
- package/dist/node_modules/antd-style/es/utils/responsive.js +0 -13
- package/dist/node_modules/antd-style/es/utils/responsive.js.map +0 -1
- package/dist/node_modules/antd-style/es/utils/safeStartTransition.js +0 -8
- package/dist/node_modules/antd-style/es/utils/safeStartTransition.js.map +0 -1
- package/dist/node_modules/antd-style/node_modules/@ant-design/cssinjs/es/Cache.js +0 -41
- package/dist/node_modules/antd-style/node_modules/@ant-design/cssinjs/es/Cache.js.map +0 -1
- package/dist/node_modules/antd-style/node_modules/@ant-design/cssinjs/es/StyleContext.js +0 -56
- package/dist/node_modules/antd-style/node_modules/@ant-design/cssinjs/es/StyleContext.js.map +0 -1
- package/dist/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js +0 -71
- package/dist/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js.map +0 -1
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js +0 -89
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js.map +0 -1
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js +0 -71
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/index.js +0 -12
- package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/index.js.map +0 -1
- package/dist/node_modules/moment/dist/moment.js +0 -2583
- package/dist/node_modules/moment/dist/moment.js.map +0 -1
- package/dist/node_modules/rc-util/es/hooks/useMemo.js +0 -9
- package/dist/node_modules/rc-util/es/hooks/useMemo.js.map +0 -1
- package/dist/node_modules/rc-util/es/isEqual.js +0 -36
- package/dist/node_modules/rc-util/es/isEqual.js.map +0 -1
- package/dist/node_modules/rc-util/es/warning.js +0 -42
- package/dist/node_modules/rc-util/es/warning.js.map +0 -1
- package/dist/node_modules/react-fast-marquee/dist/index.js +0 -146
- package/dist/node_modules/react-fast-marquee/dist/index.js.map +0 -1
- package/dist/node_modules/react-is/cjs/react-is.production.js +0 -69
- package/dist/node_modules/react-is/cjs/react-is.production.js.map +0 -1
- package/dist/node_modules/react-phone-input-2/lib/style.css +0 -1
- package/dist/node_modules/styled-components/dist/styled-components.browser.esm.js +0 -559
- package/dist/node_modules/styled-components/dist/styled-components.browser.esm.js.map +0 -1
- package/dist/node_modules/use-merge-value/dist/index.esm.js +0 -56
- package/dist/node_modules/use-merge-value/dist/index.esm.js.map +0 -1
- package/dist/tokens/design-system-dark/build/js/variables.js +0 -233
- package/dist/tokens/design-system-dark/build/js/variables.js.map +0 -1
- package/dist/tokens/design-system-light/build/js/variables.js +0 -336
- package/dist/tokens/design-system-light/build/js/variables.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../../node_modules/canvg/lib/index.es.js"],"sourcesContent":["import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\n }\n\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n\n getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n\n getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n\n getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n\n getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n\n}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n\n}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n\n onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n\n setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n\n start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(resolve => {\n this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = () => {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n\n this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n\n}\n\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n\n applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(attribute => {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode); // TEXT_NODE\n }\n }\n });\n }\n\n getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n\n getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n\n setContext(_) {// NO RENDER\n }\n\n applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n\n clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n\n matchesSelector(selector) {\n var _node$getAttribute;\n\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n\n removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((toRestore, name) => {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach(_ref => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n isFirstChild() {\n var _this$parent;\n\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n static parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(part => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n [fontSize] = part.split('/');\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n\n toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n constructor() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n\n addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n\n isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n\n isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n\n}\n\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n var [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n\n static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n\n initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n var boundingBox = null; // then calculate bounding box\n\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n\n getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n\n getText() {\n return '';\n }\n\n getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces( // textNode.value\n // || textNode.text\n textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx); // then render\n\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n\n renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n } // }\n\n }\n\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n\n var firstElement = this.leafTexts[this.textChunkStart];\n var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n var isRTL = false; // we treat RTL like LTR\n\n var shift = 0;\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n\n for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift;\n } // start new chunk\n\n\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i);\n }\n }\n\n adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var customFont = child.getStyle('font-family').getDefinition();\n var isRTL = Boolean(customFont) && customFont.isRTL;\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n\n var width = child.measureText(ctx);\n\n if (isRTL) {\n textParent.x -= width;\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x;\n\n if (!isRTL) {\n textParent.x += width;\n }\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y; // update the current chunk and it's bounds\n\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = parent.children[i]; // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = parent.children[i];\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\r\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n * are only inherited from a parent to its first child.\r\n * @param name - The attribute name.\r\n * @returns The attribute value or null.\r\n */\n\n\n getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n var current = this;\n\n while (current instanceof TextElement && current.isFirstChild()) {\n var parentAttr = current.parent.getAttribute(name);\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getValue('0');\n }\n\n current = current.parent;\n }\n\n return null;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan'; // if this node has children, then they own the text\n\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var {\n width,\n height\n } = screen.viewPort;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n\n}\n\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n\n path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n\n getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(_ref => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n\n}\n\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n\n}\n\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n\n}\n\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\n var stopColor = this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialValue = null;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n\n calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n\n update(delta) {\n var {\n parent\n } = this;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n\n getProgress() {\n var {\n document,\n values\n } = this;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = Object.create(null);\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\n switch (child.type) {\n case 'font-face':\n {\n this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n\n break;\n }\n\n case 'missing-glyph':\n this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n\n if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n this.glyphs[glyph.unicode] = Object.create(null);\n }\n\n this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n }\n }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n\n}\n\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n\n onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([['', 0]]);\n var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(_ref => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n\n getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n\n setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the <text> node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n\n return 0;\n }\n\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (p2x === p1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n\n getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n\n getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n\n getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n}\n\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(_ => {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(cssProp => {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n\n path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n\n getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n var matrix = toNumbers(this.getAttribute('values').getString());\n\n switch (this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n /* eslint-disable array-element-newline */\n\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n\n}\n\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(child => {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />\n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(child => {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(child => {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n\n}\n\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.canvg = canvg;\n this.definitions = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n\n createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n\n createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n"],"names":["offscreen","DOMParserFallback","preset","width","height","url","_asyncToGenerator","response","blob","img","node","_ref","DOMParser","canvas","fetch","index","compressSpaces","str","trimLeft","trimRight","toNumbers","matches","allUppercase","normalizeAttributeName","name","parseExternalUrl","urlMatch","normalizeColor","color","rgbParts","normalizedColor","num","isFloat","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","PSEUDO_ZERO","vectorMagnitude","v","vectorsRatio","u","vectorsAngle","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","Property","document","value","separator","zeroIsValue","regexp","result","asString","def","n","axisOrIsFontSize","processPercent","axis","isFontSize","viewPort","element","opacity","patternTransform","len","commas","i","RGBColor","ViewPort","viewPorts","d","Point","x","y","point","defaultValue","scale","path","points","pathPoints","transform","xp","yp","Mouse","screen","onClick","onMouseMove","events","eventElements","style","run","ctx","_ref2","boundingBox","_ref3","window","event","eventTarget","defaultWindow","defaultFetch$1","Screen","checker","isReadyLock","_","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreMouse","ignoreAnimation","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","FRAMERATE","mouse","frameDuration","resolve","now","then","tick","requestAnimationFrame","shouldUpdate","animation","CLIENT_WIDTH","CLIENT_HEIGHT","isFirstRender","widthStyle","heightStyle","cWidth","cHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","defaultFetch","DefaultDOMParser","Parser","resource","_this","xml","parser","parserError","_this2","Translate","Rotate","rotate","transformOrigin","numbers","cx","cy","originX","originY","angle","tx","ty","rad","Scale","scaleSize","Matrix","matrix","b","c","e","f","h","det","Skew","skew","SkewX","SkewY","parseTransforms","parseTransform","type","Transform","data","TransformType","transformOriginXProperty","transformOriginYProperty","transforms","Element","captureTextNodes","attribute","nodeName","styles","definitions","id","childNode","textNode","createIfNotExists","attr","_attr","key","skipAncestors","parent","parentStyle","_style","mask","filter","clipPathStyleProp","child","_node$getAttribute","styleClasses","styleClass","stylesSpecificity","existingSpecificity","ignoreStyles","toRestore","styleProp","_this$parent","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","process","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","font","parts","set","part","BoundingBox","x1","y1","x2","y2","p0","p1","p2","p3","forX","a","b2ac","t1","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","cp1x","cp1y","cp2x","cp2y","PathParser","SVGPathData","commands","command","xProp","yProp","previousCommand","ox","oy","from","priorTo","angles","j","RenderedElement","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","_fillStyle","_fillStyle2","strokeStyle","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","offset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","PathElement","pathParser","markers","fillRuleStyleProp","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_marker","_point","_angle","_marker2","_point2","_angle2","current","controlPoint","currentPoint","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","l","s","cpp","centp","a1","ad","dir","ah","halfWay","r","sx","sy","GlyphElement","TextElement","textBaseline","childBoundingBox","inheritFontSize","text","char","glyph","prevChar","nextChar","arabicForm","maybeGlyph","childNodes","lastIndex","renderText","customFont","unitsPerEm","ctxFont","dx","lw","firstElement","textAnchor","isRTL","shift","textParent","xAttr","yAttr","dxAttr","dyAttr","measureCache","measure","targetText","_measure","parentAttr","TSpanElement","TextNode","SVGElement","_this$node$parentNode","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","x0","y0","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","pattern","MarkerElement","orient","markerUnits","markerSvg","DefsElement","GElement","GradientElement","stops","children","stopsContainer","gradient","stop","MAX_VIRTUAL_PIXELS","rootView","rect","group","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","RadialGradientElement","fx","fy","fr","StopElement","stopOpacity","stopColor","AnimateElement","valuesAttr","attributeType","attributeName","initialUnits","progress","to","newValue","prop","fill","updated","typeAttr","values","p","lb","ub","AnimateColorElement","colorFrom","colorTo","g","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","ownKeys$2","object","enumerableOnly","keys","symbols","sym","_objectSpread$2","target","source","_defineProperty","TextPathElement","pathElement","dataArray","theta","dTheta","psi","fs","textDecoration","glyphInfo","rotation","partialText","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","splineStep","segment","dyX","dyY","measuresCache","chars","thisSpacing","parentSpacing","letterSpacing","letterSpacingCache","textLen","dxSum","acc","cur","textWidth","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","commandType","start","end","inc","dist","fromX","fromY","m","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","length","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","step","targetDistance","dataUriRegex","ImageElement","href","isSvg","image","match","svg","loaded","subDocument","_image","SymbolElement","SVGFontLoader","svgDocument","fonts","fontNode","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","props","cssProp","srcs","src","UseElement","tempSvg","oldParent","imGet","_height","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","_x","_y","includeOpacity","srcData","nr","ng","nb","na","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","noop","ClipPathElement","contextProto","beginPath","closePath","FilterElement","px","py","efd","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","canvasRGBA","TitleElement","DescElement","elements","ownKeys$1","_objectSpread$1","createCanvas","createImage","_createImage","anonymousCrossOrigin","reject","_event","_source","_lineno","_colno","error","Document","canvg","rootEmSize","emSize","forceAnonymousCrossOrigin","emSizeStack","documentElement","elementType","ElementType","config","ownKeys","_objectSpread","Canvg","options","_arguments","_arguments2","baseOptions"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../node_modules/canvg/lib/index.es.js"],"sourcesContent":["import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\n }\n\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n\n getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n\n getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n\n getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n\n getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n\n}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n\n}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n\n onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n\n setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n\n start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(resolve => {\n this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = () => {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n\n this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n\n}\n\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n\n applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(attribute => {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode); // TEXT_NODE\n }\n }\n });\n }\n\n getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n\n getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n\n setContext(_) {// NO RENDER\n }\n\n applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n\n clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n\n matchesSelector(selector) {\n var _node$getAttribute;\n\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n\n removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((toRestore, name) => {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach(_ref => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n isFirstChild() {\n var _this$parent;\n\n return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n static parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(part => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n [fontSize] = part.split('/');\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n\n toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n constructor() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n\n addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n\n isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n\n isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n\n}\n\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n var [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n\n static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n\n initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n var boundingBox = null; // then calculate bounding box\n\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n\n getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n\n getText() {\n return '';\n }\n\n getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces( // textNode.value\n // || textNode.text\n textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n } // first, calculate child positions\n\n\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx); // then render\n\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n\n renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n } // }\n\n }\n\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n } // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n\n var firstElement = this.leafTexts[this.textChunkStart];\n var textAnchor = firstElement.getStyle('text-anchor').getString('start');\n var isRTL = false; // we treat RTL like LTR\n\n var shift = 0;\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n\n for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift;\n } // start new chunk\n\n\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i);\n }\n }\n\n adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var customFont = child.getStyle('font-family').getDefinition();\n var isRTL = Boolean(customFont) && customFont.isRTL;\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n\n var width = child.measureText(ctx);\n\n if (isRTL) {\n textParent.x -= width;\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x;\n\n if (!isRTL) {\n textParent.x += width;\n }\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y; // update the current chunk and it's bounds\n\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = parent.children[i]; // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = parent.children[i];\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\r\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\r\n * are only inherited from a parent to its first child.\r\n * @param name - The attribute name.\r\n * @returns The attribute value or null.\r\n */\n\n\n getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n var current = this;\n\n while (current instanceof TextElement && current.isFirstChild()) {\n var parentAttr = current.parent.getAttribute(name);\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getValue('0');\n }\n\n current = current.parent;\n }\n\n return null;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan'; // if this node has children, then they own the text\n\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var {\n width,\n height\n } = screen.viewPort;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n\n}\n\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n\n path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n\n getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(_ref => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n\n}\n\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n\n}\n\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n\n}\n\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\n var stopColor = this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialValue = null;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n\n calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n\n update(delta) {\n var {\n parent\n } = this;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n\n getProgress() {\n var {\n document,\n values\n } = this;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = Object.create(null);\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\n switch (child.type) {\n case 'font-face':\n {\n this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n\n break;\n }\n\n case 'missing-glyph':\n this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n\n if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n this.glyphs[glyph.unicode] = Object.create(null);\n }\n\n this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n }\n }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n\n}\n\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n\n onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([['', 0]]);\n var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(_ref => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n\n getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n\n setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the <text> node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n\n return 0;\n }\n\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (p2x === p1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n\n getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n\n getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n\n getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n}\n\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(_ => {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(cssProp => {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n\n path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n\n getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n var matrix = toNumbers(this.getAttribute('values').getString());\n\n switch (this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n /* eslint-disable array-element-newline */\n\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n\n}\n\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(child => {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />\n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(child => {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(child => {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n\n}\n\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.canvg = canvg;\n this.definitions = Object.create(null);\n this.styles = Object.create(null);\n this.stylesSpecificity = Object.create(null);\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n\n createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n\n createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n"],"names":["offscreen","DOMParserFallback","preset","width","height","url","_asyncToGenerator","response","blob","img","node","_ref","DOMParser","canvas","fetch","index","compressSpaces","str","trimLeft","trimRight","toNumbers","matches","allUppercase","normalizeAttributeName","name","parseExternalUrl","urlMatch","normalizeColor","color","rgbParts","normalizedColor","num","isFloat","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","PSEUDO_ZERO","vectorMagnitude","v","vectorsRatio","u","vectorsAngle","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","Property","document","value","separator","zeroIsValue","regexp","result","asString","def","n","axisOrIsFontSize","processPercent","axis","isFontSize","viewPort","element","opacity","patternTransform","len","commas","i","RGBColor","ViewPort","viewPorts","d","Point","x","y","point","defaultValue","scale","path","points","pathPoints","transform","xp","yp","Mouse","screen","onClick","onMouseMove","events","eventElements","style","run","ctx","_ref2","boundingBox","_ref3","window","event","eventTarget","defaultWindow","defaultFetch$1","Screen","checker","isReadyLock","_","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreMouse","ignoreAnimation","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","FRAMERATE","mouse","frameDuration","resolve","now","then","tick","requestAnimationFrame","shouldUpdate","animation","CLIENT_WIDTH","CLIENT_HEIGHT","isFirstRender","widthStyle","heightStyle","cWidth","cHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","defaultFetch","DefaultDOMParser","Parser","resource","_this","xml","parser","parserError","_this2","Translate","Rotate","rotate","transformOrigin","numbers","cx","cy","originX","originY","angle","tx","ty","rad","Scale","scaleSize","Matrix","matrix","b","c","e","f","h","det","Skew","skew","SkewX","SkewY","parseTransforms","parseTransform","type","Transform","data","TransformType","transformOriginXProperty","transformOriginYProperty","transforms","Element","captureTextNodes","attribute","nodeName","styles","definitions","id","childNode","textNode","createIfNotExists","attr","_attr","key","skipAncestors","parent","parentStyle","_style","mask","filter","clipPathStyleProp","child","_node$getAttribute","styleClasses","styleClass","stylesSpecificity","existingSpecificity","ignoreStyles","toRestore","styleProp","_this$parent","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","process","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","font","parts","set","part","BoundingBox","x1","y1","x2","y2","p0","p1","p2","p3","forX","a","b2ac","t1","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","cp1x","cp1y","cp2x","cp2y","PathParser","SVGPathData","commands","command","xProp","yProp","previousCommand","ox","oy","from","priorTo","angles","j","RenderedElement","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","_fillStyle","_fillStyle2","strokeStyle","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","offset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","PathElement","pathParser","markers","fillRuleStyleProp","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_marker","_point","_angle","_marker2","_point2","_angle2","current","controlPoint","currentPoint","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","l","s","cpp","centp","a1","ad","dir","ah","halfWay","r","sx","sy","GlyphElement","TextElement","textBaseline","childBoundingBox","inheritFontSize","text","char","glyph","prevChar","nextChar","arabicForm","maybeGlyph","childNodes","lastIndex","renderText","customFont","unitsPerEm","ctxFont","dx","lw","firstElement","textAnchor","isRTL","shift","textParent","xAttr","yAttr","dxAttr","dyAttr","measureCache","measure","targetText","_measure","parentAttr","TSpanElement","TextNode","SVGElement","_this$node$parentNode","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","x0","y0","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","pattern","MarkerElement","orient","markerUnits","markerSvg","DefsElement","GElement","GradientElement","stops","children","stopsContainer","gradient","stop","MAX_VIRTUAL_PIXELS","rootView","rect","group","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","RadialGradientElement","fx","fy","fr","StopElement","stopOpacity","stopColor","AnimateElement","valuesAttr","attributeType","attributeName","initialUnits","progress","to","newValue","prop","fill","updated","typeAttr","values","p","lb","ub","AnimateColorElement","colorFrom","colorTo","g","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","ownKeys$2","object","enumerableOnly","keys","symbols","sym","_objectSpread$2","target","source","_defineProperty","TextPathElement","pathElement","dataArray","theta","dTheta","psi","fs","textDecoration","glyphInfo","rotation","partialText","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","splineStep","segment","dyX","dyY","measuresCache","chars","thisSpacing","parentSpacing","letterSpacing","letterSpacingCache","textLen","dxSum","acc","cur","textWidth","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","commandType","start","end","inc","dist","fromX","fromY","m","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","length","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","step","targetDistance","dataUriRegex","ImageElement","href","isSvg","image","match","svg","loaded","subDocument","_image","SymbolElement","SVGFontLoader","svgDocument","fonts","fontNode","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","props","cssProp","srcs","src","UseElement","tempSvg","oldParent","imGet","_height","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","_x","_y","includeOpacity","srcData","nr","ng","nb","na","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","noop","ClipPathElement","contextProto","beginPath","closePath","FilterElement","px","py","efd","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","canvasRGBA","TitleElement","DescElement","elements","ownKeys$1","_objectSpread$1","createCanvas","createImage","_createImage","anonymousCrossOrigin","reject","_event","_source","_lineno","_colno","error","Document","canvg","rootEmSize","emSize","forceAnonymousCrossOrigin","emSizeStack","documentElement","elementType","ElementType","config","ownKeys","_objectSpread","Canvg","options","_arguments","_arguments2","baseOptions"],"mappings":"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","x_google_ignoreList":[0]}
|